這些天一直在學習ado
資料庫連線,感覺比較複雜,所以一邊學習,一邊使用,一邊做了一些筆記,下面的一些東西就是我總結的一些關於ado
1、導入庫檔案
使用ado前必須在工程的stdafx.h檔案最後用直接引入符號#import引入ado庫檔案,以使編譯器能正確編譯。**如下:
#import "c:program filescommon filessystemadomsado15.dll" no_namespace rename("eof","endoffile") rename("bof","firstoffile")
ado類的定義是作為一種資源儲存在ado dll(msado15.dll)中,在其內部稱為型別庫。型別庫描述了自治介面,以及c++使用的com vtable介面。當使用#import指令時,在執行時visual c++需要從ado dll中讀取這個型別庫,並以此建立一組c++標頭檔案。這些標頭檔案具有.tli 和.tlh副檔名,讀者可以在專案的目錄下找到這兩個檔案。在c++程式**中呼叫的ado類要在這些檔案中定義。
程式的第三行指示ado物件不使用命名空間。在有些應用程式中,由於應用程式中的物件與ado中的物件之間可能會出現命名衝突,所以有必要使用命名空間。如果要使用命名空間,則可把第三行程式修改為: rename_namespace("adons")。第四行**將ado中的eof(檔案結束)更名為adoeof,以避免與定義了自己的eof的其他庫衝突。
2、初始化com環境
(1)::coinitialize(null); //初始化ole/com庫環境
::couninitialize();//既然初始化了環境,當然就有必要釋放他了
(2)也可以呼叫mfc全域性函式
afxoleinit();
3、三大物件的定義和建立例項
(1) _connectionptr pconnection("adodb.connection");
_recordsetptr precordset("adodb.recordset");
_commandptr pcommand("adodn.command");
(2) _connectionptr pconnection;
_recordsetptr precordset;
_commandptr pcommand;
pconnection.createinstance(__uuidof(connection));
precordset.createinstance(__uuidof(recordset));
pcommand.createinstance(__uuidof(command));
(3) _connectionptr pconnection;
_recordsetptr precordset;
_commandptr pcommand;
pconnection.createinstance("adodb.connection");
precordset.createinstance("adodb.recordset");
pcommand.createinstance("adodb.command");
4、開啟乙個連線
pconnection->open(connectionstring,"","",admodeunknown);///連線資料庫
上面的連線字串connectionstring根據不同的資料來源,分別對應不同的寫法
1)訪問access 2000
"provider=microsoft.jet.oledb.4.0;data source=databasename;user id=username;password=userpassword"
2)訪問odbc資料
"provider=madasql;dsn=dsnname;uid=username;pwd=userpassword;"
3)訪問oracle資料庫
「provider=msdaora;data sourse=servername;user id=username;password=userpassword;"
3)訪問ms sql資料庫
"provider=sqloledb,data source=servername;initial catalog=databasename;user id=username;password=userpassword;"
4、執行sql命令
sql命令比較多,但是不去考慮細節,這裡只說出通用的方法
cstring strsql;//定義sql命令串,用來儲存sql語句
strsql.format("sql statement");
然後在每個要用到sql命令串的方法中,使用strsql.allocsysstring()的方法進行型別轉換
5、com的專用資料型別
variant ,bstr ,safearray
variant變數的範圍包括很多,使用_variant_t 進行管理
bstr是一種字串變數,使用_bstr_t進行管理
6、關閉連線
if(m_pconnection->state)//不能多次關閉,否則會出現錯誤
m_pconnection->close();
7、結構化異常處理
ado封裝了com介面,所以需要進行錯誤處理
如下例:
hresult hr;
try}
catch(_com_error e)///捕捉異常
8、錯誤原因的分析
(1)不支援介面,可能是不能插入空值
好了,希望大家可以跟我一起完善這篇總結!
ADO 資料庫連線
這些天一直在學習ado 1 導入庫檔案 使用ado前必須在工程的stdafx.h檔案最後用直接引入符號 import引入ado庫檔案,以使編譯器能正確編譯。如下 import c program files common files system ado msado15.dll no namespa...
ADO連線資料庫
2009 05 02 19 06 1.ado物件連線資料庫 建立乙個mfc對話方塊工程 stdafx.h中新增 import c program files common files system ado msado15.dll no namespace rename eof adoeof rena...
ADO連線access資料庫
1.開啟access建立資料庫student.accdb.然後建立一些表,如 student table 2.建立資料來源,控制面板 管理工具 資料來源,選擇資料庫相應的驅動建立資料來源 3.應用程式連線資料庫,和訪問記錄 關鍵語句 引入ado import c program files comm...