เราจะทำให้ ms access db ฝังอยู่ในแอปพลิเคชั่น winform เพื่อให้พกพาได้อย่างไร

โปรดอธิบายวิธีที่เราสามารถฝัง ms access db ในแอปพลิเคชัน winform ของเราเพื่อให้สามารถทำงานบนเครื่องอื่นได้อย่างง่ายดายด้วยไฟล์เพียงไฟล์เดียว .EXE ฉันทำการค้นหาไปมากแล้ว แต่ยังไม่สามารถหาวิธีแก้ปัญหาที่เหมาะสมได้ ขอบคุณล่วงหน้า


person user2927881    schedule 01.11.2013    source แหล่งที่มา
comment
ฉันคิดถูกหรือไม่ว่าคุณต้องการฝังแอปพลิเคชันฐานข้อมูล Access ใน .exe ของคุณ เพื่อให้แบบฟอร์ม รายงาน ฯลฯ ที่สร้างใน Access จะถูกรวมเข้ากับแอป Winforms ของคุณได้อย่างราบรื่น   -  person Gord Thompson    schedule 01.11.2013
comment
ขออภัย ไม่เกี่ยวข้องเลย แต่ฉันต้องหัวเราะกับชื่อของคำถามนี้เมื่อเห็นมันในรายการที่ยังไม่ได้ตอบ การเห็น MS, Access และ WinForm ทั้งหมดในบรรทัดเดียวกันที่ลงท้ายด้วยคำว่า Portable ทำให้ฉันพ่นโซดาออกมาทางจมูก ฉันรู้ว่ามันไม่ใช่ความหมายเชิงสัมพันธ์ที่ตั้งใจไว้ แต่เมื่อมองผ่านๆ มันตลกเกินไป   -  person WhozCraig    schedule 01.11.2013
comment
กอร์ด ฉันแค่ต้องการให้แอปพลิเคชันของฉันไม่จำเป็นต้องมีการติดตั้งใดๆ เมื่อทำงานบนเครื่องอื่น...ถ้าฉันมี .exe ของแอปพลิเคชัน มันก็ควรจะทำงานได้ทุกที่...ฉันต้องไม่จำเป็นต้องติดตั้ง dbms ใดๆ ( นั่นคือการเข้าถึง ms)   -  person user2927881    schedule 01.11.2013
comment
คุณใช้ ms access เป็นที่เก็บข้อมูลเท่านั้นเหรอ? จากนั้นเพียงใส่ไฟล์ .mdb หรือ .accdb พร้อมกับ .exe   -  person 4dmonster    schedule 01.11.2013
comment
เราไม่สามารถฝังมันเข้ากับโปรเจ็กต์แทนที่จะแยกมันไว้ในโฟลเดอร์ได้   -  person user2927881    schedule 01.11.2013
comment
ควรเป็นไปได้ที่จะสร้างฐานข้อมูลเปล่าพร้อมโค้ดแล้วเพิ่มตารางลงไป นี่เป็นคำถามที่น่าสนใจ   -  person HelloW    schedule 01.11.2013
comment
แต่ผู้เชี่ยวชาญคิดว่าฉันได้ตั้งคำถามที่คลุมเครือไว้ที่นี่...   -  person user2927881    schedule 01.11.2013


คำตอบ (1)


สมมติว่าคุณกำลังใช้ MDB ดังนั้นเอ็นจิ้นฐานข้อมูล (32 บิต) (JET) ก็เป็นส่วนหนึ่งของ Windows ดังนั้นจึงไม่ควรมีข้อกำหนดในการตั้งค่าสำหรับสิ่งนั้น หากฐานข้อมูลเป็นแบบอ่านอย่างเดียวและไม่ได้เขียนลงไป คุณสามารถเพิ่มฐานข้อมูลนั้นเป็นทรัพยากรใน EXE ได้ และเมื่อแอปพลิเคชันเริ่มทำงาน ให้แตกทรัพยากรลงในไดเร็กทอรี TEMP หรือหากฐานข้อมูลมีขนาดใหญ่และคุณไม่รังเกียจที่จะออก แคชเกี่ยวกับลงในโฟลเดอร์ย่อยภายใต้ข้อมูลแอปพลิเคชันในเครื่อง (CSIDL_LOCAL_APPDATA) หากคุณทำอย่างหลัง ในครั้งถัดไปที่แอปพลิเคชันเริ่มทำงาน จะสามารถตรวจสอบเพื่อดูว่ามี MDB ที่แยกออกมาที่ถูกต้องอยู่แล้วหรือไม่ และใช้สิ่งนั้นหากเป็นเช่นนั้น คุณสามารถทำสิ่งที่คล้ายกันได้หากต้องการเขียนฐานข้อมูล แต่สำหรับที่จัดเก็บในตัวเครื่องเท่านั้น ซึ่งในกรณีนี้ MDB ที่เชื่อมโยงจะทำหน้าที่เป็นฐานข้อมูล 'เทมเพลต'

หากคุณใช้ Delphi หรือ C++ ฉันขอแนะนำให้ตรวจสอบ SQLite เป็นทางเลือกที่เป็นไปได้แทน JET แม้ว่าฉันจะถือว่ามันเป็น C# (แท็ก 'c' ค่อนข้างสับสน) คุณจะไม่สามารถเชื่อมโยง SQLite แบบคงที่ได้ รหัสซึ่งไม่ผ่านข้อกำหนด EXE แบบสแตนด์อโลน

person Chris Rolliston    schedule 01.11.2013
comment
@ user2927881 เป็นคำตอบที่ดีตามสิ่งที่คุณบอกเรา (และที่สำคัญกว่านั้นคือสิ่งที่คุณไม่ได้บอกเรา) อย่างน้อยคุณก็อาจจะกล่าวขอบคุณ - person Gord Thompson; 01.11.2013
comment
Chris: ขอแสดงความยินดีที่มีตัวแทนถึง 1,000 คน คุณมีส่วนร่วมที่ดีมาก และเราขอขอบคุณพวกเขา (พวกเราส่วนใหญ่ก็ทำเช่นกัน...) - person Gord Thompson; 01.11.2013