VC++ ado連線資料庫(可以在VC6.0使用,以access資料庫為例項)(1)
很多新手對資料庫連線迷茫了,怎麼我寫的就連線不上資料庫呢?或者有些功能就實現不了(感覺這太奇葩了吧),下面就怎麼連線資料庫進行說明。
看以下程式碼和解說步驟:(後面附帶一個完整的類給大家進行下載,便於直接進行呼叫)
1.首先新建一個類,方便下次使用,編寫了一次就不用再編寫。
假如生成類的名字為:BAdo
則在這個類標頭檔案新增以下程式碼:
#import "C:\Program Files\Common Files\System\ado\msado15.dll"\
no_namespace rename("EOF","adoEOF")
以上程式碼放在#pragma once前面就行了,這個不多說。
2.新增成員變數
_ConnectionPtr con;
_RecordsetPtr rec;//其實這2個就是ado介面指標,進行資料庫的操作。
3.新增以下成員函式:可以通過右鍵類名點選新增函式進行操作:
BOOL ExecuteSQL(_bstr_t bstrSQL);
_RecordsetPtr& GetRecordset(_bstr_t bstrSQL);
void ExitConn();
void Onit();
4.實現成員函式程式碼內容:
void Ado::Onit()//初始化ado連線
{
::CoInitialize (NULL);
try
{
con.CreateInstance (__uuidof(Connection));
con->Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/db1.mdb;Persist Security Info=False","","",-1);//連線資料庫,d:/db1.mdb為你的資料庫地址
//注意:如果要連線sql server200X上面的那條字串需要修改一點,這個改法會在另外一篇文章再寫。
}
catch(_com_error e)//捕捉異常
{
AfxMessageBox(e.Description ());
}
}
void Ado::ExitConn()//關閉ado連線
{
try
{
if(rec!=NULL)
rec->Close ();
con->Close ();
::CoUninitialize ();
}
catch(_com_error e)
{
AfxMessageBox(e.Description ());
}
}
_RecordsetPtr& Ado::GetRecordset(_bstr_t bstrSQL)//查詢操作
{
try
{
if(con==NULL)
Onit ();
rec.CreateInstance (__uuidof(Recordset));
rec->Open (bstrSQL,con.GetInterfacePtr (),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.Description ());
}
return rec;
}
BOOL Ado::ExecuteSQL(_bstr_t bstrSQL)//執行操作
{
try
{
if(con==NULL)
Onit();
con->Execute (bstrSQL,NULL,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.Description ());
}
return true;
}
以上就簡單的說明了連線資料庫的程式碼。下面就發給大家一個ado連線類,方便大家再裡面再新增一些你需要的程式碼和使用。
對於這個類的操作,在下一篇文章進行說明。