现在的位置: 首页 > 综合 > 正文

ADO连接数据库方法

2014年02月28日 ⁄ 综合 ⁄ 共 1657字 ⁄ 字号 评论关闭

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 }

 

抱歉!评论已关闭.