ADO 資料庫連線

2021-08-28 15:49:49 字數 2718 閱讀 8431

這些天一直在學習ado

1、導入庫檔案

使用ado前必須在工程的stdafx.h檔案最後用直接引入符號#import引入ado庫檔案,以使編譯器能正確編譯。**如下:

#import "c:\program files\common files\system\ado\msado15.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 資料庫連線,感覺比較複雜,所以一邊學習,一邊使用,一邊做了一些筆記,下面的一些東西就是我總結的一些關於ado 1 導入庫檔案 使用ado前必須在工程的stdafx.h檔案最後用直接引入符號 import引入ado庫檔案,以使編譯器能正確編譯。如下 import c progr...

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...