問題詳述:
ADO最主要的優點是易於使用、速度快、內存支出少和磁盤痕跡小。在關鍵的應用方案中使用最少的網絡流量,並且在前端和數據源之間使用最少的層數,所以這些都是爲了提供輕量、高性能接口。那麼如何實現ADO連接數據庫呢?
打開百度APP,查看更多高清圖片
如果對你有幫助的話,幫忙推薦同學朋友關注公衆號,是小編最好的支持
具體過程:
首先需要一個ODBC數據源。然後用_ConnectionPtr對象打開數據庫連接,_RecordsetPrt對象獲取記錄集,這樣就完成了數據庫的鏈接。最後在不使用該數據庫後要需要先後使用函數_RecordsetPrt::Close和_ConnectionPt::Close斷開連接。
相關代碼如下:
(1) 爲了使用ADO,必須先引入Ado庫文件(在stdafx.h文件中),代碼如下:
#import"c:\Program Files\Common Files\System\ado\msado15.dll"no_namespacerename(“EOF”,“adoEOF”)
(2) 分別聲明數據庫連接_ConnectionPtr和記錄集_RecordsetPtr類型的變量;
_ConnectionPtr pConn;//數據庫連接
_RecordsetPtr pPtr; //記錄集對象
(3) 完成數據庫的鏈接,代碼如下:
BOOL CMainDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 將“關於…”菜單項添加到系統菜單中。
// IDM_ABOUTBOX 必須在系統命令範圍內。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
}
CommandPtr pCommandPtr;
try
{
if (FAILED(pCommandPtr.CreateInstance(“ADODB.Command”)))
{
//AfxMessageBox(“GetUserIdFromUserProArray 創建_CommandPtr對象失敗”);
return 0;
}
}
catch(_com_error e)
{
CString errormessage2;
errormessage2.Format(“CMainDlg GetUserIdFromUserProArray-創建_CommandPtr對象異常!\r\n 錯誤描述:%s \r\n 錯誤信息:%s”,
(LPCTSTR)e.Description(),e.ErrorMessage());
//AfxMessageBox(errormessage2);
PrintRunningLog((LPSTR)(LPCTSTR)errormessage2);
return 0;
}
//1@[UserProArray]
pCommandPtr->ActiveConnection = pConnection;
for(int ii = 0;ii<1;ii++)
{
_RecordsetPtr pSystemSetWifiPtr;
try
{
CString strSystemSetSql;
strSystemSetSql.Format(“select UserId from [UserProArray] where [projectCode]=’%s’”,procode);
//CString strSystemSetSql = "select * from 系統設置 ";
pCommandPtr->CommandText = _bstr_t(strSystemSetSql);
pSystemSetWifiPtr = pCommandPtr->Execute(NULL,NULL,adCmdText);
if (pSystemSetWifiPtr == NULL) //判斷記錄集是否爲空,空退出
{
break;
}
if (pSystemSetWifiPtr->adoEOF) //判斷數據庫是否有數據
{
break;
}
if (pSystemSetWifiPtr->GetRecordCount()) //獲取數據庫數據數目
{
pSystemSetWifiPtr->MoveFirst(); //指向第一行
}
else
{
//釋放記錄集和連接
pSystemSetWifiPtr->Close();
pSystemSetWifiPtr.Release();
pSystemSetWifiPtr = NULL;
break;
}
}