1. 引入ADO数据库文件msado15.dll,在stdafx.h文件中添加如下代码
1 #import "C:\Program Files\Common Files\System\ado\msado15.dll" \ 2 no_namespace rename ("EOF", "adoEOF")
2. 在stdafx.h头文件中引入afxdb.h头文件
1 #include "afxdb.h"
3. 初始化OLE DB环境,在InitInstance文件中添加如下代码
1 if (!AfxOleInit()) { 2 return false; 3 }
至此,初始化ADO的工作已经做好,下一步就是连接数据库和打开记录集了
4. 在主对话框的头文件中添加两个成员变量
1 _ConnectionPtr m_pConnection_; 2 _RecordsetPtr m_pRecordset_;
5. 在主对话框的头文件中添加一个成员函数bool DB_Connection(),用于连接数据库;添加一个成员函数bool Recordset_Connection(CString sql),用于打开记录集
1 bool DB_Connection(); 2 bool Recordset_Connection();
6. 在主对话框的Cpp文件中实现这两个函数
1 bool CNLCDlg::DB_Connection() { 2 HRESULT hr; 3 try { 4 hr = m_pConnection_.CreateInstance(__uuidof(Connection)); 5 if (SUCCEEDED(hr)) { 6 _bstr_t strConnect = "driver={sql server};server=(local);uid=;pwd=;database=DB_NLC"; 7 hr = m_pConnection_->Open(strConnect, "", "", adConnectUnspecified); 8 if (FAILED(hr)) { 9 AfxMessageBox(_T("连接数据库失败!")); 10 return FALSE; 11 } 12 } else { 13 AfxMessageBox(_T("创建Connection对象失败!")); 14 return FALSE; 15 } 16 } catch (_com_error e) { 17 _bstr_t bstrSource = e.Source(); 18 _bstr_t bstrDescription = e.Description(); 19 AfxMessageBox(bstrSource + " " + bstrDescription); 20 return FALSE; 21 } 22 return TRUE; 23 }
1 bool CNLCDlg::Recordset_Connection(CString sql) { 2 HRESULT hr; 3 try { 4 hr = m_pRecordset_.CreateInstance(__uuidof(Recordset)); 5 if (FAILED(hr)) { 6 AfxMessageBox(_T("创建记录集失败!")); 7 return FALSE; 8 } else { 9 hr = m_pRecordset_->Open(_variant_t(sql), 10 m_pConnection_.GetInterfacePtr(), 11 adOpenDynamic, 12 adLockOptimistic, 13 adCmdText); 14 if (FAILED(hr)) { 15 AfxMessageBox(_T("打开记录集失败!")); 16 return FALSE; 17 } 18 } 19 } catch (_com_error e) { 20 _bstr_t bstrSource = e.Source(); 21 _bstr_t bstrDescription = e.Description(); 22 AfxMessageBox(bstrSource + " " + bstrDescription); 23 return FALSE; 24 } 25 return TRUE; 26 }
转载于:https://www.cnblogs.com/yewei/archive/2012/12/21/2828025.html