在使用ADO前我们应该初始化COM库
- if (!SUCCEEDED(CoInitialize(NULL)))
- {
- ::AfxMessageBox(_T("Failed to initialize COM!"));
- return FALSE;
- }
复制代码 然后引入ADO动态库。
- #import "c:\program files\common files\system\ado\msado15.dll"\
- no_namespace\
- rename("EOF", "adoEOF")
复制代码 然后才是定义智能指针,初始化它,再进行数据库的打开与关闭
- _ConnectionPtr m_pConnection;
复制代码
- if (!SUCCEEDED(m_pConnection.CreateInstance(__uuidof(Connection))))
- {
- m_pConnection = NULL;
- TRACE(_T("Database CreateInstance failed"));
- }
复制代码 调用下面按钮点击函数来打开 与关闭数据库。
- void CGkbc8Dlg::OnButton1()
- {
- if (m_pConnection->State & adStateOpen)
- {
- AfxMessageBox(_T("数据库已经打开。"));
- return;
- }
-
- CString strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= Demo.mdb");
- if (OpenDatabase(strConnect))
- {
- AfxMessageBox(_T("数据库打开成功。"));
- }
- else
- {
- AfxMessageBox(_T("数据库打开失败。"));
- }
- }
复制代码- BOOL CDemoDlg::CloseDatabase()
- {
- ASSERT(m_pConnection != NULL);
- //关闭数据库连接
- try
- {
- if (m_pConnection->State & adStateOpen)
- {
- return SUCCEEDED(m_pConnection->Close());
- }
- else
- {
- return TRUE;
- }
- }
- catch (_com_error& e)
- {
- TRACE(_T("%s\n"), e.ErrorMessage());
- return FALSE;
- }
- }
复制代码 上面两具按钮调用的两个函数为
- void CDemoDlg::OnOpen()
- {
- if (m_pConnection->State & adStateOpen)
- {
- AfxMessageBox(_T("数据库已经打开。"));
- return;
- }
-
- CString strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= Demo.mdb");
- if (OpenDatabase(strConnect))
- {
- AfxMessageBox(_T("数据库打开成功。"));
- }
- else
- {
- AfxMessageBox(_T("数据库打开失败。"));
- }
- }
- void CDemoDlg::OnClose()
- {
- if (!(m_pConnection->State & adStateOpen))
- {
- AfxMessageBox(_T("数据库未打开。"));
- return;
- }
- if (CloseDatabase())
- {
- AfxMessageBox(_T("数据库关闭成功。"));
- }
- else
- {
- AfxMessageBox(_T("数据库关闭失败。"));
- }
- }
复制代码 注意,例程打开的是根目录的一个数据库文件:Demo.mdb
上位机MFC如何使用ADO打开与关闭数据库连接
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|