SQL Server mfc 數(shù)據(jù)庫類簡介
此文章主要講述的是SQL Server mfc 數(shù)據(jù)庫類, 我們大家都知道自從 1.5 版之后,mfc 數(shù)據(jù)庫類中就已經(jīng)包含了odbc 數(shù)據(jù)庫類。visual c++ 2.0 版提供了含有相同類的 32 位版本。這些類基于一個工業(yè)認可標準,并已得到廣泛應用。
且因其 odbc 具有可移植性而受到其它數(shù)據(jù)庫開發(fā)選擇方案的青睞。這種可移植性是指能夠?qū)⒃S多 odbc 數(shù)據(jù)源與用這些類創(chuàng)建的應用程序一起使用。近來的性能改進使得 odbc 數(shù)據(jù)庫類成為一個吸引人的選擇方案。
在多數(shù)情況下,mfc 4.0 中的 dao 數(shù)據(jù)庫類允許您直接訪問桌面數(shù)據(jù)源而無須使用 odbc。dao 數(shù)據(jù)庫類所具有的同時打開多個數(shù)據(jù)庫類型的能力、使用多數(shù)據(jù)源的能力以及數(shù)據(jù)定義語言能力,使其成為重要的開發(fā)選擇方案。
現(xiàn)在,您已經(jīng)準備好提出這個問題,自己應使用哪個數(shù)據(jù)庫類集合。如果您所提供的有關自己項目的信息不多,就很難確定這個問題的答案。但是,***件要考慮的事情是您使用什么數(shù)據(jù)源。如果您通常使用桌面數(shù)據(jù),我們鼓勵您考慮SQL Server mfc dao 數(shù)據(jù)庫類,因為您將會發(fā)現(xiàn)它們極為有效且功能強大。
如果您主要使用 odbc(基于服務器)的數(shù)據(jù),則使用基于 odbc 的類會使您項目的進展更富成效。
其它考慮事項包括網(wǎng)絡種類、可伸縮性要求,以及速度是否是最重要的因素。***是用您認為工作得***的數(shù)據(jù)庫類集讓應用程序保持原型。可以進行一些基準測試,以確定您的***性能選擇。
真正的決定權(quán)在您
您可用來創(chuàng)建數(shù)據(jù)庫應用程序的選項集合很大。它實際是完整的一系列選項,一端是桌面數(shù)據(jù)庫應用程序,另一端是嚴格的客戶/服務器數(shù)據(jù)庫應用程序。僅有的兩種看似明顯的選擇可能是:在 microsoft access 97 mdb 數(shù)據(jù)中使用 SQL Server mfc dao 數(shù)據(jù)庫類,而在 microsoft sql server ™ 6.5 中使用 mfc odbc 數(shù)據(jù)庫類。這兩種組合主要是互相配合使用的,均非常有效。但您可能已對這些選擇有所了解,其它情況又該如何呢?
簡要地說,以下是您賴以決策的過程:
確定數(shù)據(jù)源需求
您需要的數(shù)據(jù)庫有多大? 一次會有多人需要訪問數(shù)據(jù)嗎? 有時,其余的大多數(shù)步驟均取決于您選擇的數(shù)據(jù)源。
確定接口需求
如果您需要的接口有大量的用戶輸入(如用戶可以設計自己的查詢),那么在調(diào)整和分發(fā)數(shù)據(jù)庫(一個或多個)時就必須要慎重。例如,如果需要用變化不大的數(shù)據(jù)填充列表框,并且已選擇基于服務器的數(shù)據(jù)源,則將通常不變化的數(shù)據(jù)存儲在本地而非服務器上,是一種有意義的做法。
確定連接性需求
目前使用的網(wǎng)絡協(xié)議有很多種,每種協(xié)議都對通過網(wǎng)絡傳送的數(shù)據(jù)各有不同影響。關于網(wǎng)絡的討論不是本白皮書份內(nèi)之事,但您需要了解如何優(yōu)化自己的數(shù)據(jù)庫應用程序,以避免遇到網(wǎng)絡的數(shù)據(jù)陷阱。
選擇適當?shù)墓ぞ?一個或多個)
microsoft 為數(shù)據(jù)庫開發(fā)人員提供了多種可選擇的工具(microsoft access、visual basic、visual basic enterprise、visual c++/mfc 以及 sql server),在某些情況下它們的功能略有重疊。本白皮書旨在討論 visual c++/mfc 選項。但如果您還未考慮其它選項,應該也對它們稍加了解。
在實施前保持原型
在本文中您將數(shù)次看到此陳述,因為它很重要。您可能已做了很好的選擇,但除非您的解決方案真的起了作用,否則工作就不算完成!
此外,關于本文,我們假設您想了解的是 SQL Server mfc 的數(shù)據(jù)庫類。我們不妨盡可能多地檢查一些選擇方案,以便您認可您想為自己的***個原型采用的指導。
類 crecordview 是一種 mfc 構(gòu)造 - 一種顯示數(shù)據(jù)的形式。因為 crecordview 是基于 cformview 的,所以它具有該基礎類的所有遺傳功能。從本質(zhì)上說,窗體視圖在窗口的客戶端區(qū)域伸展對話框模板。這使得添加控件與顯示字段數(shù)據(jù)極為容易。
當使用 appwizard 和 classwizard 創(chuàng)建基于 odbc 的數(shù)據(jù)庫應用程序時,記錄集的列會自動綁定到(靜態(tài)地)成員變量,這些變量可以隨后添加到對話框模板中。
一個 cdbexception 對象代表一種由數(shù)據(jù)庫類引起的異常錯誤條件。該類中含有兩個公共數(shù)據(jù)成員,可使用這兩個成員確定導致異常錯誤的原因,或顯示對異常錯誤進行說明的文本消息。cdbexception 對象由數(shù)據(jù)庫類的成員函數(shù)構(gòu)造與拋出。
cfieldexchange 類支持由數(shù)據(jù)庫類使用的記錄字段交換 (rfx) 例程。如果您正在編寫自定義數(shù)據(jù)類型的數(shù)據(jù)交換例程,則使用該類;否則,您不會直接使用該類。rfx 在您記錄集對象的字段數(shù)據(jù)成員和數(shù)據(jù)源上當前記錄的相應字段之間交換數(shù)據(jù)。rfx 管理兩個方向中的交換,即來自數(shù)據(jù)源的交換與到數(shù)據(jù)源的交換。
在 dao 的本機格式中,包含 21 個對象和 20 個集合。而且,dao 不僅提供單個的對象,如表和字段,還提供對象所屬的集合。對象的這種清晰的層次結(jié)構(gòu)使得能夠輕松地將面向?qū)ο蟮脑響糜跀?shù)據(jù)庫開發(fā)。
dao 的存在已有一段時間。dao 1.0 版出現(xiàn)在 microsoft access 1.0 版中,它僅提供到表與查詢結(jié)構(gòu)的接口,以及代表具有數(shù)量有限的屬性的表、動態(tài)集、快照的對象。visual basic 3.0 版中的 data access objects 1.0 添加了 tabledef、querydef 和 field 對象,以提供可編程的結(jié)構(gòu)。
microsoft access 2.0 版中的 dao 2.0 版有 ole 自動化的雛形,以及對幾乎所有 microsoft jet 功能的全部編程訪問權(quán)限。它擁有具有可靠的對象與屬性集合的全部對象模型。
dao 2.5 版中含有 odbc 桌面數(shù)據(jù)庫驅(qū)動程序 (odbc desktop database driver),這些驅(qū)動程序是為 16 位平臺能與 odbc desktop database drivers 2.0 版一起使用而創(chuàng)建的。該 16 位版本是為用于 visual basic 4.0 版的 16 位版本而安裝的。
dao 3.0 版隨帶在 microsoft access for windows 95、visual basic 4.0 版(32 位)、microsoft excel 7.0 版 和 visual c ++ 4.0 版中。dao 得到了增強,以支持任何兼容主機的單機接口。
dao 3.5 版隨帶在 microsoft access for windows 97 中,并且含有新的 odbcdirect com 對象。SQL Server mfc dao 數(shù)據(jù)庫類不包括這些對象的類。
最為重要的是,dao 接口是基于 ole com 的,它很好地安置 dao 以適應不斷發(fā)展的技術和操作系統(tǒng)。
此處是 dao 層次結(jié)構(gòu)圖表。在頂端,將看到 dbengine 對象,該對象中含有所有其它對象。這是唯一沒有集合的對象,因為您只能有一個引擎。但可以有多個工作區(qū) (workspace)、數(shù)據(jù)庫 (database) 等等,這正是余下的對象都有自己所屬集合的原因。
在工作區(qū)中,可以有多個數(shù)據(jù)庫,一個基本表 (.mdb) 或一個附加/鏈接的表。在每個數(shù)據(jù)庫中將有一個或多個表、查詢、記錄集,而其中的每個表、查詢、記錄集不僅包含字段和(或)索引,還有其它類型的對象。
另外,與工作區(qū)連接的是用戶對象和組對象,它們形成了 dao 的安全模型。
獨立但與引擎對象連接的是 errors 對象。
errors 集合中對象的附加方式不同于其它 dao 集合。最詳細的錯誤放在集合的末尾,最常規(guī)的錯誤放在開頭。
【編輯推薦】
- SQL Server數(shù)據(jù)庫如何正確加密?
- SQL Server2005數(shù)據(jù)庫連接中易出現(xiàn)的錯誤列舉
- 實現(xiàn)SQL Server 2005中的模糊查找包并不難
- 實現(xiàn)SQL Server數(shù)據(jù)庫同步的準實時方案很簡單
- 如何加強SQL Server 2000 數(shù)據(jù)庫的網(wǎng)絡連接安全性?