本文記錄使用 MFC ODBC 類別 (CDatabase, CRecordset) 連接 SQL Server 2005 並實現基本 CRUD 操作的完整流程,適合初学者快速上手。
使用 SQL Server Management Studio 建立資料庫 Test01 及所需資料表(如 UserInfo)。
TestSQL01,選擇目標伺服器。Test01。否則連線預設指向 master,導致「物件名稱無效」錯誤。#include // MFC ODBC 標頭
// 成員變數
CDatabase m_db;
CRecordset rs;
// OnInitDialog 或初始化函式
TRY {
m_db.OpenEx(_T("DSN=TestSQL01;"), CDatabase::noOdbcDialog);
rs.m_pDatabase = &m_db;
}
CATCH(CDBException, e) {
AfxMessageBox(e->m_strError);
}
END_CATCH
CString sql = _T("SELECT PassWord FROM UserInfo WHERE UserID = 123");
CString psd;
TRY {
rs.Open(AFX_DB_USE_DEFAULT_TYPE, sql);
if (!rs.IsEOF()) rs.GetFieldValue(_T("PassWord"), psd);
rs.Close();
}
CATCH(CDBException, e) { AfxMessageBox(e->m_strError); }
END_CATCH
CString sql = _T("INSERT INTO UserInfo(UserID, UserName) VALUES(123, 'Bob')");
TRY {
m_db.ExecuteSQL(sql);
}
CATCH(CDBException, e) { AfxMessageBox(e->m_strError); }
END_CATCH
CRecordset 使用完畢必須 Close(),否則連線佔用不釋放。CRecordset::AddNew/Edit/Update 批次模式,或直接執行 SQL 批次。CDBException、CMemoryException、CException 三層捕捉。