在現代軟體開發中,資料庫技術被越來越廣泛應用,很多專案都存在著大量的資料需要儲存,通常都會採用資料庫來儲存這些資料。最初,資料庫廠商推出乙個新的資料庫產品時,相應的,他會為程式設計師提供一套訪問該資料庫的介面,即api。不同的資料庫廠商提供的訪問介面是不一樣的,這樣在使用乙個新的資料庫時,就要學習一套新的api,當然這就加大了開發資料庫的難度,也不利於資料庫在軟體開發過程中的應用。因此,後來microsoft就推出了一些標準的訪問資料庫的技術。
這一部分主要介紹ado訪問資料庫的情況,對於其它技術,可以自行查閱相應書籍,ado中有以下3個核心物件。
@connection物件
connection物件表示到資料庫的鏈結,它管理應用程式和資料庫之間的通訊,下面的2個物件都有乙個activeconnection屬性,該屬性用來引用connection物件。
@command物件
command物件用來 處理 重複執行的查詢,或處理 需要檢查 在儲存過程中的輸出或返回值 的查詢。
@recordset物件
recordset物件用來儲存資料,存放查詢的結果,這些結果由資料的行(記錄)和列(字段)組成。每一列都存放在recordset的fields集合中的乙個field物件中。
第一步:
在vc中利用ado訪問資料庫時,首先需要匯入ado庫。在程式的預編譯標頭檔案stdafx.h中匯入該庫,方法是利用import指令將此動態鏈結庫匯入,具體**如下:#import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("eof","rseof"),**中使用了no_namespace關鍵字,namespace是命名空間,本例中不需要命名空間,主要是為了訪問方便,在程式中可以直接訪問ado提供的connection、command、recordset這3個com介面。最後利用rename將eof改為rseof。eof表示 記錄集 的結尾,因為檔案也是以eof為結尾的,為了避免衝突,在匯入ado庫時,需要將eof改為rseof。至於將其改為什麼名字,可以根據自己的習慣來定。
在匯入ado庫之後,編譯程式,會出現一條警告,在vc中利用ado訪問資料庫時都會存在這一警告,對程式並沒有影響,可以不用理會。編譯之後,在debug目錄下,可以看到編譯器為我們產生了兩個檔案,msado15.tlh和msado15.tli。可以將msado15.tlh看作是乙個標頭檔案,msado15.tli看作是乙個原始檔,這兩個檔案是在匯入ado庫之後,編譯器在編譯的時候自動生成的,利用ado技術訪問資料庫並不需要為工程匯入這兩個檔案。
第二步:
為需要訪問資料庫的類新增2個成員變數,_recordsetptr m_prs(資料集物件);_connectionptr m_pconn;(資料庫鏈結物件) 接著在程式初始化的時候初始化這2個物件
com元件在使用時,需要初始化com庫,這就需要呼叫coinitialize(null);函式來實現,該函式有乙個引數,該引數是保留的,直接傳遞null即可,同時在訪問完com庫之後,程式需要呼叫couninitialize();函式解除安裝com庫。
接著,初始化 資料鏈結物件 和 資料集物件。在初始化這兩個物件時,利用__uuidof獲取ado connection和ado recordset物件的全域性唯一識別符號(guid)。對m_pconn物件進行初始化。
然後,利用智慧型指標物件去訪問該物件的屬性和方法了。首先,為資料庫鏈結物件的鏈結字串賦值。然後呼叫鏈結物件的open方法開啟與資料庫的鏈結。關於鏈結字串的獲得:不必死記硬背,可以利用vb開發環境來得到鏈結字串,p756。
接下來就可以利用鏈結物件的execute方法來從資料庫獲得資料了。
當資料操作完成之後,呼叫記錄集物件的close方法關閉記錄集,最後呼叫鏈結物件的close方法關閉鏈結。然後還需要釋放智慧型指標在com介面上的引用計數,即分別呼叫記錄集物件和鏈結物件的release方法,該方法將釋放相應com介面的引用計數。智慧型指標有乙個特點,在訪問其它屬性和方法時,都是用->操作符,但在呼叫release方法釋放引用計數時,必須使用.操作符。
vc訪問ACCESS資料庫
在現代軟體開發中,資料庫技術被越來越廣泛應用,很多專案都存在著大量的資料需要儲存,通常都會採用資料庫來儲存這些資料。最初,資料庫廠商推出乙個新的資料庫產品時,相應的,他會為程式設計師提供一套訪問該資料庫的介面,即api。不同的資料庫廠商提供的訪問介面是不一樣的,這樣在使用乙個新的資料庫時,就要學習一...
用C 訪問Access資料庫
我編寫這個程式的動機是當我希望用c sharp訪問msaccess資料庫的時候我沒有辦法獲得任何資訊和參考材料.網上所能獲得的所有材料都是偏重於sql的,所以我們將分兩步來編寫這個應用程式,第一我們將展示如何連線到msaccess資料庫然後看看它有多複雜.最後,我們就這樣完成了這個程式.閒言少序,讓...
用C 訪問ACCESS資料庫問題
最近這個專案中用到是access的資料庫,開始沒有使用密碼進行連線 string connectionstring provider microsoft.jet.oledb.4.0 data source connectionstring c data db db.mdb oledbconnecti...