ADO進行資料庫開發 轉貼

2021-04-09 08:41:34 字數 3045 閱讀 7147

1.匯入ado庫

在stdafx.h中,加入如下**

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

no_namespace  rename("eof","adoeof") rename("bof","adobof")

afxoleinit();(mfc)

或者coinitialize(null)

如果用了coinitialize

退出時,要呼叫couninitialize()

3.連線資料庫

bool openconnect()

return (succeeded(hresult) ? true : false);

}這裡連線的資料庫是access資料庫,在工程目錄下的database/aa.mdb

關鍵連線的字元竄,

如果是access

provider=microsoft.jet.oledb.4.0;data source=//192.168.1.1/database/aa.mdb;

這是區域網上的檔案

provider=microsoft.jet.oledb.4.0;data source=.//database//aa.mdb;

本機上的

如果是sql 2000

provider=sqloledb.1;persist security info=true;user id=sa;password=sa;initial catalog=aa;data source=192.168.1.1;

資料庫在192.168.1.1上,資料庫名字是aa

4.關閉連線

bool closeconnect()

7.判斷是否為空

if (precordset->adobof && precordset->adoeof)

return;

}8,從記錄集取資料

_variant_t      var;

precordset->movefirst();

for(;!precordset->adoeof;precordset->movenext())

9.幾種常見資料的轉換

如果是字元竄的字段

var = precordset->getcollect(_t("field"));

if(var.vt!=vt_null)

if(var.vt!=vt_null)

判斷是必須的,如果是空,轉換會出錯

如果是int形

int aa = atoi(str)

_variant_t是個可變型別,支援很多種型別,

10.使用command

利用command物件來執行sql命令

_commandptr m_pcommand;

m_pcommand.createinstance("adodb.command");

_variant_t vnull;

vnull.vt = vt_error;

vnull.scode = disp_e_paramnotfound;///定義為無引數

m_pcommand->activeconnection = m_pconnection;///非常關鍵的一句,將建立的連線賦值給它

m_pcommand->commandtext = "select * from users";///命令字串

m_precordset = m_pcommand->execute(&vnull,&vnull,adcmdtext);///執行命令,取得記錄集

如果使用記錄集的open來開啟command物件.

如果在 source 引數中傳送 command 物件並且同時傳遞 activeconnection 引數,那麼將產生錯誤。command 物件的 activeconnection 屬性

必須已經設定為有效的 connection 物件或者連線字串。

所以_variant_t vnull;

vnull.vt = vt_error;

vnull.scode = disp_e_paramnotfound;

_commandptr pcommand;

...m_precordset->open(_variant_t( (idispatch*)pcommand, true),vnull,cursortype, locktype, loption )

11.關於資料中時間的處理

首先,sql語句中有很多時間處理的函式,可以拿來使用,如果不使用這些函式,那麼直接用sql語句來拼寫

cstring strdate= "2006-8-11";

cstring strsql;

strsql.format("select * from table where date=#%s#",strdate);

accee用#時間,其他大部分都是用''來括的

如果返回得到乙個時間,那麼

cstring型別的變數轉化成coledatetime

coledatetime::parsedatetime

或者cstring str = "2004-07-08 11:22:33";

colevariant varianttime;

varianttime = str;

varianttime.changetype(vt_date);

coledatetime datatime = varianttime;

反過來轉,更簡單了,

coledatetime有format 函式,包括ctime也有這樣的函式

12,插入或者刪除記錄

strsql.format(_t(" insert into table values('%s','%s','%s','%s',#%s#)"),

strid,strname,strauthor,strpublisher,strdate);

try刪除也是類似的

新增刪除的話,是不返回記錄集的,其他的地方,和查詢是一樣的

ado 利用智慧型指標進行資料庫操作

在caboutdlg標頭檔案中定義兩個ado智慧型指標類例項,並在對話方塊中加入乙個listctrl。connectionptr m pconnection recordsetptr m precordset clistctrl m list ado庫包含三個智慧型指標 connectionptr ...

ADO資料庫開發技術

ado的底層是ole db,所以不僅能訪問關係型資料庫,也能訪問非關係型資料庫,更是現在最快速的資料庫訪問中間層。1.ado主要物件介紹 ado物件包括 connection object 連線物件 command object 命令物件 recordset object 記錄集物件 field o...

ado mysql 開發 ADO資料庫開發技術

ado的底層是ole db,所以不僅能訪問關係型資料庫,也能訪問非關係型資料庫,更是現在最快速的資料庫訪問中間層。1.ado主要物件介紹 ado物件包括 connection object 連線物件 command object 命令物件 recordset object 記錄集物件 field o...