1. 程式人生 > >VC++ ado連線資料庫(可以在VC6.0使用,以access資料庫為例項)(1)

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連線類,方便大家再裡面再新增一些你需要的程式碼和使用。

對於這個類的操作,在下一篇文章進行說明。