ภาพรวม
ในหลายกรณี ดังกล่าวอาจเป็นการโยกย้ายโปรแกรมประยุกต์ที่ใช้ชั้นฐานข้อมูล ODBC MFC ของการเรียนที่เปิดฐานข้อมูล DAO MFC ของ หมายเหตุทางเทคนิคนี้จะมีรายละเอียดมากที่สุดของความแตกต่างระหว่างคลาสที่ MFC ODBC และ DAO มีความแตกต่างในใจ ไม่ควรยากสุดเหวี่ยงกับโยกย้ายโปรแกรมประยุกต์จากคลาสที่ ODBC ไปยังคลาสที่ MFC ถ้าต้อง?
ทำไมโยกย้ายจาก ODBC เพื่อ DAO?
มีหลายเหตุผลที่ทำไมคุณอาจต้องการย้ายโปรแกรมประยุกต์จากคลาสที่ฐานข้อมูล ODBC กับคลาสที่ฐานข้อมูล DAO แต่การตัดสินใจไม่จำเป็นต้องง่าย หรือไม่ชัดเจน สิ่งหนึ่งที่ควรระลึกคือ Microsoft Jet database engine ที่ถูกใช้ โดย DAO สามารถอ่านแหล่งข้อมูล ODBC ใด ๆ ที่คุณมีโปรแกรมควบคุม ODBC มันอาจจะเพิ่มประสิทธิภาพในการใช้คลาสที่ฐานข้อมูล ODBC หรือเรียก ODBC โดยตรงด้วยตัวเอง แต่ Microsoft Jet database engine สามารถอ่านข้อมูล ODBC?
มีบางกรณีที่ง่าย ๆ ที่ทำให้ง่ายต่อการตัดสินใจของ ODBC/DAO ตัวอย่าง เมื่อคุณเพียงต้องการเข้าถึงข้อมูลในรูปแบบ Microsoft Jet engine สามารถอ่านได้โดยตรง (รูปแบบ Access, FoxPro รูป รูปแบบ Excel และอื่น ๆ) ทางเลือกที่ชัดเจนคือการ ใช้คลาสที่ฐานข้อมูล DAO?
กรณีที่ซับซ้อนมากขึ้นเกิดขึ้นเมื่อมีการให้ข้อมูลของคุณอยู่ บนเซิร์ฟเวอร์ หรือ บนเซิร์ฟเวอร์ที่แตกต่างกันมากมาย ในกรณีนี้ การตัดสินใจการใช้คลาสที่ฐานข้อมูล ODBC หรือฐานข้อมูล DAO คลาสที่เป็นขึ้นยาก ถ้าคุณต้องการ ทำสิ่งที่ชอบรวมแตกต่างกัน (การรวมข้อมูลจากเซิร์ฟเวอร์ในหลายรูปแบบเช่น SQL Server และ Oracle), แล้ว Microsoft Jet database engine จะทำการรวมสำหรับคุณแทนที่จะบังคับให้คุณทำงานจำเป็นหากคุณใช้คลาสที่ฐานข้อมูล ODBC หรือเรียกว่า ODBC โดยตรง ถ้าคุณกำลังใช้โปรแกรมควบคุม ODBC ที่สนับสนุนโปรแกรมควบคุมเคอร์เซอร์ ทางเลือกที่ดีที่สุดของคุณอาจจะเรียนฐานข้อมูล ODBC?
ตัวเลือกที่มีความซับซ้อน ดังนั้นคุณอาจต้องการเขียนโค้ดบางอย่างในการทดสอบประสิทธิภาพของวิธีการต่าง ๆ ที่กำหนดความต้องการพิเศษของคุณ หมายเหตุทางเทคนิคนี้ถือว่า คุณได้ทำการตัดสินใจการโยกย้ายจากคลาสที่ฐานข้อมูล ODBC เพื่อเรียนในฐานข้อมูล DAO?
ความคล้ายคลึงกันระหว่างชั้นฐานข้อมูล ODBC และชั้นฐานข้อมูล MFC DAO
การออกแบบต้นฉบับของคลาสที่ MFC ODBC ยึดแบบวัตถุ DAO ซึ่งได้ถูกใช้งานใน Microsoft Access และ Microsoft Visual Basic ซึ่งหมายความ ว่า มีคุณลักษณะทั่วไปหลาย ๆ อย่าง ODBC และ DAO MFC ชั้น ซึ่งจะไม่ใช่ทั้งหมดจะแสดงในส่วนนี้ ทั่วไป แบบจำลองที่มีการเขียนโปรแกรมจะเหมือนกัน?
เพื่อเน้นความคล้ายคลึงกันเพียงไม่กี่:
ตัวอย่าง ในทั้งสองรุ่น คือกระบวนการเรียกข้อมูลการ สร้าง และเปิดวัตถุฐานข้อมูล สร้าง และเปิดวัตถุ recordset และการนำทาง (ย้าย) แม้ว่าข้อมูลการดำเนินการบางอย่าง?
ความแตกต่างระหว่างโปรแกรมควบคุม ODBC และคลาสของ DAO MFC
คลาสที่ DAO รวมวัตถุมากกว่าหนึ่งวัตถุและชุดอื่น ๆ วิธีการ แต่ในส่วนนี้จะรายละเอียดความแตกต่างในชั้นเรียนที่คล้ายคลึงกันและการทำงานเท่านั้น?
ความแตกต่างที่เด่นชัดระหว่างการเรียนอาจมีการเปลี่ยนแปลงชื่อสำหรับชั้นที่คล้ายคลึงกันและฟังก์ชันสากล Ofnbsp เปลี่ยนแปลงชื่อ แสดงรายการต่อไปนี้ วัตถุ วิธีการ และฟังก์ชันที่เกี่ยวข้องกับคลาสที่ฐานข้อมูลสากล(&N):
| คลาสหรือฟังก์ชัน | เทียบเท่าในคลาสของ MFC DAO |
| CDatabase | CDaoDatabase |
| CDatabase::ExecuteSQL | CDaoDatabase::Execute |
| CRecordset | CDaoRecordset |
| CRecordset::GetDefaultConnect | CDaoRecordset::GetDefaultDBName |
| CFieldExchange | CDaoFieldExchange |
| RFX_Bool | DFX_Bool |
| RFX_Byte | DFX_Byte |
| RFX_Int | DFX_Short |
| RFX_Long | DFX_Long |
| DFX_Currency | |
| RFX_Single | DFX_Single |
| RFX_Double | DFX_Double |
| RFX_Date * | DFX_Date (COleDateTime-ใช้) |
| RFX_Text | DFX_Text |
| RFX_Binary | DFX_Binary |
| RFX_LongBinary | DFX_LongBinary |
* ฟังก์ชันRFX_DateจะยึดCTimeและTIMESTAMP_STRUCT?
เปลี่ยนหลักการทำงานซึ่งอาจส่งผลกระทบต่อโปรแกรมประยุกต์ของคุณ และต้องเปลี่ยนชื่อมากกว่าธรรมดา อยู่ด้านล่าง?
คลาสที่ ODBC MFC จำเป็นในการกำหนดตัวเลือกเหล่านี้ผ่านแมโคร หรือระบุชนิด?
กับคลาสที่ DAO, DAO ให้คำจำกัดความของตัวเลือกเหล่านี้ในส่วนหัวของแฟ้ม (DBDAOINTH) . ชนิดชุดระเบียนคือ สมาชิกที่ระบุของCRecordsetแต่กับดาว เป็นค่าคงแทน ตัวอย่าง ที่คุณจะใช้snapshot ของเมื่อระบุชนิดของCRecordsetใน ODBC แต่DB_OPEN_SNAPSHOTเมื่อระบุชนิดของCDaoRecordset?
หมายเหตุnbsp Snapshot ของ DAO (CDaoRecordset) เป็นแบบอ่านอย่างเดียวในขณะที่ snapshot ของ ODBC (CRecordset) อาจสามารถปรับปรุงทั้งนี้ขึ้นอยู่กับโปรแกรมควบคุมและการใช้ ODBC เคอร์เซอร์ไลบรารี ถ้าคุณกำลังใช้เคอร์เซอร์ไลบรารี snapshot ของCRecordsetจะสามารถปรับปรุงได้ ถ้าคุณกำลังใช้โปรแกรมควบคุม Microsoft จากเดสก์ท็อปไดรเวอร์ Pack 3.0 ใด ๆ โดย ODBC เคอร์เซอร์ไลบรารี snapshot ของCRecordsetเป็นแบบอ่านอย่างเดียว ถ้าคุณกำลังใช้โปรแกรมควบคุมอื่น ตรวจสอบเอกสารประกอบของโปรแกรมควบคุมเพื่อดูถ้า snapshot ของ (STATIC_CURSORS) เป็นแบบอ่านอย่างเดียว(&N)?
หมายเหตุด้านเทคนิคตามหมายเลข|nbsp หมายเหตุด้านเทคนิคตามประเภท(&N)