前些天弄一个访问access数据库的小东西,费了些力气才弄好。
虽然还有些不尽人意,但是终究还是可以用了,
在这里分享一下自己的实现方法和经验。
里面的东西网上都有,但是,这里的是最全的。
vc/mfc访问access数据库
方法1:
1 创建一个基于对话框的应用程序。
放入两个activex 控件 microsoft ado data control,version 6.0 ... 和 microsoft datagrid control,version 6.0 如果没有两个空间的话,请安装office组件。
2 为控件设置属性。
1) 为ado data control 设置属性:control -> use connection string -> build
在弹出的对话框中选择 microsoft jet 4.0 ole db provider -> 下一步 -> 在选择或输入数据库名称处,选择所创建的数据库文件,例如:d:/test_db/testdb.mdb。密码处默认为空,如果用户表有密码的话,输入密码,并选中允许保存密码 -> 单击测试连接 如弹出测试连接成功 表示数据文件已经可已使用。直接确定,回到为对话框资源编辑界面。
为这一控件的:recordsource 选项设置属性如下:
command type 选择 1 -adcmdtext
command text(sql) 中 输入sql语句 : select * from mydb;
ado data control 控件的属性就设置完成了。关闭属性设置界面。
2) 为datagrid control设置属性。
datasource 列表中选择:idc_adodc1
关闭属性设置界面。
编译,运行。如果数据库中有数据的话,就会在datagrid中显示出来了。
想进行其他的数据库操作的话,如下例:
接着上面的程序步骤,
为ado data control 添加一个变量:m_adodc;
为data grid 添加一个变量:m_adodg;
一个按钮,双击为按钮增加函数。在函数中增加下面的代码:
cstring strtem = select * from mydb where susername '张三';
//vc 6.0
m_adodc.setrecordresource(strtem);
m_adodc.refresh();
//vs 2005/vs 2008
m_adodc.put_recordsource(strtem);
m_adodc.refresh();
编译运行,效果就出来了。
ps:这种方式下,查询的效果很好,但是,进行insert , update , delete 操作的时候会出现一些错误提示:
//vc 6.0 中
对象已关闭,无法进行操作。
//vs 中
windows has triggered a breakpoint in ...
虽然有提示,但是数据库的操作是成功的。就这个问题查遍了网络,没有人能给出解决方案,同样,我并不比他们强。
第一种方案到此结束。
