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