博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用MFC连接Access数据库
阅读量:7086 次
发布时间:2019-06-28

本文共 2488 字,大约阅读时间需要 8 分钟。

(1
新建一个 Access 数据库文件。将其命名为 data.mdb ,并创建好表、字段。

(2为系统添加数据源。打开“控制面板”—>“管理工具”—>“数据源”,选择“系统DSN”,点击右边的“添加”按钮,选择“Microsoft Access Driver(*.mdb)”,点击“完成”,给数据源起个名字,如conn,然后点击下面的“选择”,选择刚才建立好的data.mdb,点击“确定”,就完成了数据源的添加工作。

注:如果是64位的操作系统,在点击“添加”按钮时可能没有Microsoft Access Driver(*.mdb)选项,这时你可以打开C:\Windows\SysWOW64\odbcad32.exe,这里面就有了。

(3引入ado动态库文件。此时准备工作就已经做好了,接下来就是在MFC对话框工程(本文中工程名以Test为例)中进行数据库连接了。在stdafx.h头文件中添加对ado的支持,引入ado动态库文件,添加以下代码即可:

#import "C:\ProgramFiles\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
 
(4
初始化 COM 环境。我们可以使用 AfxOleInit() 来初始化 COM 库,这项工作通常在 CWinApp::InitInstance() 的重载函数中完成,请看如下代码:
BOOL CTestApp::InitInstance()  {      AfxOleInit();     ......  }

注:还有另外一种初始化COM环境的方法,  

BOOL CTestApp::InitInstance()  {      ::CoInitialize(NULL);//在app类中的InitInstance函数中添加     ......   ::CoUninitialize();//在app类中的InitInstance函数的最后(return之前)添加,释放COM环境  }

 

5在对话框头文件CTestDlg.h的类中声明两个成员变量。

_ConnectionPtr  m_pConnection;    _RecordsetPtr   m_pRecordset;

 

(6接下来就是在对话框初始化的时候连接数据库了。在CTestDlg::OnInitDialog()中添加以下代码:

  

BOOL CTestDlg::OnInitDialog() {     // TODO:在此添加额外的初始化代码                      try     {         HRESULT hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象         if(SUCCEEDED(hr))         {             hr =m_pConnection->Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =e:\\data.mdb","","",adModeUnknown);//连接数据库             //hr =m_pConnection->Open("DRIVER={Microsoft Access Driver(*.mdb)};DBQ=e:\\data.mdb;","","",adModeUnknown);//连接数据库           //上面一句中连接字符串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;         }     }     catch(_com_error e)//捕捉异常     {         CString errormessage;         errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());         AfxMessageBox(errormessage);//显示错误信息     } }

 

(7以上准备工作做好了,就可以在程序中使用m_pConnection,m_pRecordset了。调用示例如下:

 

void CTestDlg::OnBnClickedButton1() {          //TODO: 在此添加控件通知处理程序代码          m_pRecordset.CreateInstance("ADODB.Recordset");          m_pRecordset->Open("SELECT* FROM news WHERE id = 174",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);                   _variant_t value = m_pRecordset->GetCollect("content");          SetDlgItemText(IDC_EDIT1,(LPCTSTR)_bstr_t(value)); }

 

以上是我在 news 表中找出 id=174 的新闻,并在 EDIT 中显示其 "content" 。

 

注:可将以上步骤简单地总结一下: 

  第一步:引入ado动态库文件。第二步:初始化COM环境。第三步:创建数据库连接Connection及记录集Recordset。

  通过以上步骤,就能让你的客户端和数据库交互了,可以对数据库进行增改删查等。

转载于:https://www.cnblogs.com/mzhrd/p/3529637.html

你可能感兴趣的文章
cronatab周期性任务定时计划器
查看>>
使用Xcode上传代码至GitHub
查看>>
idea改造普通引用jar包项目为maven管理jar包项目
查看>>
如果你也会C#,那不妨了解下F#(4):了解函数及常用函数
查看>>
listview隔行背景背景设置
查看>>
使用TortoiseSVN进行分支管理
查看>>
Accessing a File (Linux Kernel)
查看>>
测试内存字节对齐代码
查看>>
计算机编程语言选择的困惑
查看>>
JavaScript事件
查看>>
Spring中BeanFactory的两大步骤
查看>>
elipse 插件初了解---扩展的加载过程
查看>>
JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
查看>>
split-brain 脑裂问题(Keepalived)
查看>>
Mule ESB中entry-point-resolver的使用(2) Callable Entry Point Resolver
查看>>
mysql (master/slave)复制原理及配置
查看>>
关于ARM字节对齐的问题
查看>>
linux 3 步升级 wordpress
查看>>
PHP面试题集
查看>>
HashMap和Hashtable的区别
查看>>