MFC连接ACCESS数据库练习
第一次使用MFC连接数据库操作,虽然实现的功能很简单,但是经历了一番挫折。特记录一下过程,中间可能写法并不规范,但是至少先实现了希望的功能。
1、建立access数据库student.accdb
建立数据库
建立数据表stu_info
设计表结构: id stu_name stu_age stu_class stu_sex
从id为1开始录入几条记录,id自动增加
2、使用VS2019在MFC应用中建立一个对话框程序,在cpp文件中增加头文件名afxdb.h,该文件引入数据库相关的类CDatabase CRecordset ,并创建对象:
CDatabase m_db; CRecordset rs;
3、执行数据库打开函数,并执行测试操作读取一个学生姓名,将读取到的内容赋值给变量name
m_db.OpenEx(_T(“DSN=MS Access Database;DBQ=C:/Users/SCH1WHU/source/repos/BitechProduct/student.accdb;”));
rs.m_pDatabase = &m_db;
CString sql = _T(“select stu_name from stu_info where id = 3”);
CString name;
rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql);
rs.GetFieldValue(_T(“stu_name”),name);
4、展示读取的数据是否正确:
MessageBox(name);
5、结果验证:可以读取字段
在这个实验过程中,开始m_db.OpenEx()使用的连接字符串是从VS2019的服务器资源属性拿到的:Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\SCH1WHU\source\repos\BitechProduct\student.accdb
执行时会出现以下对话框:
然后选择“机器数据源”,选择MS ACCESS DATABASE,点击“确定”
出现如下对话框:
点击student.accdb然后选择“OK”,程序能够获取到需要的字段。
于是在连接字符串中增加了一个DSN=MS Access Database;字符串,增加后再次执行不再出现上面的第一、二图,直接出现第三个对话框。起初以为是路径的写法有问题,调整了几次路径写法,但是执行时依然是出现第三个对话框。按照对话框选择后就能正常。之后尝试连接字符串仅使用DSN这个字段,也是会出现第三个对话框,并且选择后可以正常读取。在网上查找有的连接字符串中有DBQ=字段,于是将原来的Data Source=更改成了DBQ=,修改后执行,竟然正常读取了数据。
在这次测试后,其实还是不理解其中的道理,不熟悉这些使用,但是临时证明了这是一个可行的操作。具体原理,待以后熟练了再去思考。
希望以上的挫折步骤,能够帮到和我一样刚开始练习数据库连接的人。