VC 下使用ADO編寫資料庫程式 1

2021-04-07 00:16:54 字數 1687 閱讀 3806

準備:

(1)、引入ado類

#import "c:/program files/common files/system/ado/msado15.dll" /

no_namespace /

rename ("eof", "adoeof")

(2)、初始化com

在mfc中可以用afxoleinit();非mfc環境中用:

coinitialize(null);

couninitialize();

(3)#import 包含後就可以用3個智慧型指標了:_connectionptr、_recordsetptr和_commandptr

1.連線和關閉資料庫

(1)連線

例子:連線access資料庫

afxoleinit();//初始化

hresult hr;

try}

catch(_com_error e)///捕捉異常

(2)、關閉

//如果資料庫連線有效

if( m_pconnection->state )

m_pconnection->close();

m_pconnection = null; 

(3)、設定連線時間 //設定連線時間-----------------------------------

pconnection->put_connectiontimeout(long(5));

2.開啟乙個結果集

(1)開啟,首先建立乙個_recordsetptr例項,然後呼叫open()得到一條sql語句的執行結果

_recordsetptrm_precordset;

m_precordset.createinstance(__uuidof(recordset));

// 在ado操作中建議語句中要常用try...catch()來捕獲錯誤資訊,

// 因為它有時會經常出現一些意想不到的錯誤。jingzhou xu

trycatch(_com_error *e)

(2)關閉結果集 m_precordset->close();

3.操作乙個結果集

(1)、遍歷(讀取)

a)、用precordset->adoeof來判斷資料庫指標是否已經移到結果集的末尾了;m_precordset->bof判斷是否 在第一條記錄前面: while(!m_precordset->adoeof)

b)、取得乙個欄位的值的辦法有兩種辦法

一是//表示取得第0個字段的值 m_precordset->getcollect("name");

或者 m_precordset->getcollect(_variant_t(long(0));

二是precordset->get_collect("column_name");

或者 precordset->get_collect(long(index));

(2)、新增

a)、呼叫m_precordset->addnew();

b)、呼叫m_precordset->putcollect();給每個字段賦值

c)、呼叫m_precordset->update();確認

(3)、修改

(4)、刪除

a)、把記錄指標移動到要刪除的記錄上,然後呼叫delete(adaffectcurrent) try

catch(_com_error *e)

VC 下使用ADO編寫資料庫程式

準備 1 引入ado類 import c program files common files system ado msado15.dll no namespace rename eof adoeof 2 初始化com 在mfc中可以用afxoleinit 非mfc環境中用 coinitializ...

VC 下使用ADO編寫資料庫程式

準備 1 引入ado類 import c program files common files system ado msado15.dll no namespace rename eof adoeof 2 初始化com 在mfc中可以用afxoleinit 非mfc環境中用 coinitializ...

VC 下使用ADO編寫資料庫程式

vc 下使用ado編寫資料庫程式 準備 1 引入ado類 import c program files common files system ado msado15.dll no namespace rename eof adoeof 2 初始化com 在mfc中可以用afxoleinit 非mf...