如何通過ADO接口連接數據庫

問題詳述:

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;

}

}

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