首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC 數據庫操作:通過 ID 查詢 Name 的完整步驟

     編輯:程式設計綜合問答

核心思路

MFC 提供 DAO(Access)、ODBC(通用)、OLE DB(ADO)三種數據庫訪問方式。現代項目推薦使用 ADO(_ConnectionPtr, _RecordsetPtr),輕量且跨數據庫。

ADO 實現步驟(以 SQL Server 為例)

1. 初始化 COM 與連接

#import "msado15.dll" no_namespace rename("EOF", "adoEOF")
CoInitialize(NULL);
_ConnectionPtr pConn;
pConn.CreateInstance(__uuidof(Connection));
pConn->Open("Provider=SQLOLEDB;Server=.;Database=TestDB;Uid=sa;Pwd=123;", "", "", adConnectUnspecified);

2. 執行參數化查詢


_RecordsetPtr pRs;
pRs.CreateInstance(__uuidof(Recordset));
CString sql = _T("SELECT name FROM [table] WHERE id = ?");
_CommandPtr pCmd;
pCmd.CreateInstance(__uuidof(Command));
pCmd->ActiveConnection = pConn;
pCmd->CommandText = _bstr_t(sql);
pCmd->CommandType = adCmdText;

// 綁定參數
_ParameterPtr pParam = pCmd->CreateParameter(_T("@id"), adInteger, adParamInput, 4, nID);
pCmd->Parameters->Append(pParam);

pRs = pCmd->Execute(NULL, NULL, adCmdText);

3. 讀取結果並顯示


if (!pRs->adoEOF) {
    _variant_t vName = pRs->GetCollect("name");
    CString strName = (LPCTSTR)(_bstr_t)vName;
    // 顯示到編輯框
    GetDlgItem(IDC_EDIT_NAME)->SetWindowText(strName);
}
pRs->Close();
pConn->Close();
CoUninitialize();

關鍵點提示

  • 使用參數化查詢(? + CreateParameter)防 SQL 注入。
  • 異常處理:用 _com_error 捕獲 ADO 錯誤。
  • 資源釋放:確保所有 Close()、Release() 執行,建議用智能指針(_ConnectionPtr 等)自動管理。
  • 不同數據庫修改連接字符串即可(Provider、Driver)。

參考資源

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved