How to access database using C++ & ADO - 如何用C++和ADO訪問數據庫

一、在:CWinApp::InitInstance 函數中用AfxOleInit初始化 COM
 
 if (!AfxOleInit())
 {
  AfxMessageBox("AfxOleInit Failed!");
  return FALSE;
 }


二、用 #Import 引入 ADO 對象 Dll:msado15.dll
 
 #import "c:/program files/common files/system/ado/msado15.dll" no_namespace rename("EOF", "adoEOF")
 
 //Notice:這句話輸入完畢後,VC就會在:程序生成目錄中(Debug/Release)自動產生兩個文件:
 //  msado15.tlh
 //  msado15.tli
 
三、使用 ADO 訪問數據庫
 
void CPrjADOAccessDatabaseTestDlg::OnbtnReadSqlServer()
{
 // TODO: Add your control notification handler code here
 
 CString strSql;
 CString strMsg;
 long lRecordCount;
 
 _RecordsetPtr rs;
 _ConnectionPtr conn;

 _variant_t var;
 //---------------------------------------------------------
 rs.CreateInstance(__uuidof(Recordset));
 conn.CreateInstance(__uuidof(Connection));
 //---------------------------------------------------------
 strSql = "select FirstName from dbo.Employees";
 
 //連接數據庫
 
 conn->Open("Provider=SQLOLEDB;SERVER=127.0.0.1;DATABASE=AIS20070417160827;UID=sa;PWD=sa","","",-1);
  
 //---------------------------------------------------------
 //記錄集取數
    rs->CursorLocation = adUseClient;
    rs->CursorType = adOpenForwardOnly;
    rs->LockType = adLockReadOnly;
 
 rs->Open("select * from t_User",conn.GetInterfacePtr(),adOpenForwardOnly,adLockReadOnly,adCmdText);
 
 //遍歷記錄集
 while(!rs->adoEOF)
 {
  
  var = rs->Fields->GetItem("FName")->Value;

  strMsg = (LPCSTR)_bstr_t(var);

  MessageBox(strMsg);
  
  strMsg.ReleaseBuffer();
  
  rs->MoveNext();

 }

 //清理戰場,關閉對象
 rs->Close();
 conn->Close();
  
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章