MFC通过ODBC方式连接mysql

一. 要安装mysql-connector-odbc驱动

二. 配置数据源

电脑的控制面板-管理工具-数据源ODBC-系统DSN-添加-选择刚刚安装的mysql odbc Driver

参考 http://www.bitscn.com/pdb/mysql/201407/226195.html

如果电脑是win7 64位,则需要使用C:\Windows\SysWOW64\odbcad32.exe来添加数据源

参考 http://blog.csdn.net/wang379275614/article/details/7803576

三. 代码

1. 包含头文件 afxdb.h

2. 通过下面两个类操作数据库

CDatabase类 http://www.cnblogs.com/good90/archive/2012/03/04/2379371.html
CRecordset类 http://blog.csdn.net/elcoteq983/article/details/7000745

错误集锦:

1. 使用CRecordset::GetFieldValue的错误:error C2668

m_rsSet.GetFieldValue( 0 , val);

编译时出现:error C2668: 'GetFieldValue' : ambiguous call to overloaded function

应改为:m_rsSet.GetFieldValue( (short)0 , val);

原因:GetFieldValue函数的第一个参数是short类型。

http://www.cppblog.com/xhubobo/archive/2012/06/29/180769.html

 

2. 无效的字段名或字段索引

在使用MFC的CRecord类及其派生类的时候,如果需要获取某个字段的值,就需要用到GetFieldValue的方法了。

      据我所知,GetFieldValue方法有2个重载版本,一个是GetFieldValue("字段索引","变量名"),另一个是GetFieldValue("字段名","变量名")。如果需要获取多个字段的值,那么这两种方法都对获取字段值的顺序没有要求。需要注意的是,在使用字段索引的方法时,用SELECT语句查询出来的字段的索引时从0开始的,由于GetFieldValue方法中索引的类型是short,因此需要用(short)0将0强制转换为short类型,否则会出现“error C2668: 'GetFieldValue' : ambiguous call to overloaded function”的错误,这在另外一篇文章里面有所描述。

      最后,进入本文章的主要内容。在使用GetFieldValue方法的时候,如果使用字段名获取字段值,尽管对顺序没有特殊要求,但是很多时候在运行程序时会出现“无效的字段名或字段索引”的错误,这是因为该方法对变量名的大小写有要求,将字段名修改为大写形式,即可解决问题,例如GetFieldValue( "Rid" , val)会出错,而对于GetFieldValue( "RID" , val),不管数据表中的字段名是否大小写都能顺利通过。

http://www.cppblog.com/xhubobo/archive/2012/06/29/180770.html

转载于:https://www.cnblogs.com/elautoctrl/p/4690620.html

你可能感兴趣的:(MFC通过ODBC方式连接mysql)