VC++連結ADO資料庫

來源:互聯網
上載者:User

標籤:資料庫   vc++   ado   access2000   

第一次接觸ADO資料庫,自己的一點經驗,在這裡總結一下,以免後面忘記了,再重新來看。也許文字中有錯誤,請大家能給予指正。本文中使用的資料是access2000.



.h標頭檔中定義一下變數:

_ConnectionPtr  m_pConn;

_RecordsetPtr   m_pRecSet;

_CommandPtr     m_pComd;

.cpp源檔案中實現資料庫的串連

//串連資料庫

bool MyDlg::ConnDb(void)

{

CString sPath;

CString Serror;

CString strSql;

//擷取當前路徑,並放在sPath中。

GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);

        //釋放上面函數中分配的buffer記憶體。

sPath.ReleaseBuffer();


int nPos;

        //定位最後一個\\所在的位置

nPos=sPath.ReverseFind(‘\\‘);

        //取出最後一個\\的左側部分

sPath=sPath.Left(nPos);

        //將資料庫名字串連到sPath中。

sPath+="\\MyDateBase2000.mdb";


CFileFind finder;

        //查看此資料庫檔案是否存在

if(!finder.FindFile(sPath)){

MessageBox("資料庫檔案不存在!",NULL,0);

return FALSE;

}


CString connStr;

HRESULT hRet;  //用來接收介面返回的代碼部分,如果介面返回成功,則這個值為0,如果不

                        //成功,則包含返回的錯誤狀態資訊


try

{

                //Connection代表一個windows應用程式和一個SQL服務資料庫引擎執行個體的串連

                //__uuidof擷取Connection的唯一識別碼

                //CreateInstance建立一個對象執行個體

hRet=m_pConn.CreateInstance(__uuidof(Connection));

if(!SUCCEEDED(hRet)) return FALSE;

                //CursorLocation 是ADODC對象的遊標庫的位置,預設值是adUseClient

m_pConn->CursorLocation = adUseClient;

connStr.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",sPath);

                //Open調用次函數初始化一個建立的CDaoDatabase對象,這個對象代表一個現有的數

                //據庫資源。

hRet=m_pConn->Open((_bstr_t)connStr,"","",adModeUnknown);

if(!SUCCEEDED(hRet)) return FALSE;

                //m_pComd命令指標

hRet=m_pComd.CreateInstance(__uuidof(Command));

if(!SUCCEEDED(hRet)) return FALSE;

m_pComd->ActiveConnection = m_pConn;

                //m_pRecSet記錄集指標

                //通過使用 Recordset 屬性可以使用 ADO ADODB.Recordset 對象的方法、屬性和事

                //件。

hRet=m_pRecSet.CreateInstance(__uuidof(Recordset));

if(!SUCCEEDED(hRet)) return FALSE;

}

catch (_com_error e)

{

Serror.Format("資料庫連接失敗:%s",e.ErrorMessage());

AfxMessageBox(Serror);

}

}

//關閉資料庫

void CLevelTestDialog::CloseDatabase()

{

m_pRecSet = NULL; //釋放記錄集

if(m_pConn->State)

{

m_pConn->Close(); //關閉串連

}

m_pConn= NULL;  //釋放串連指標

}


本文出自 “8453831” 部落格,請務必保留此出處http://8463831.blog.51cto.com/8453831/1530360

VC++連結ADO資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.