没有使用MFC很多年了,今天突然需要使用写一个dll,并且需要访问MySQL数据库,开始一头雾水,使用odbc吧,不想使用MySQL提供的dll。
首先下载MySQL的odbc的驱动,并在ODBC数据源管理器配置好。连接成功,即配置ok了。
其次就是写代码了。
CDatabase db;
db.OpenEx(connString,CDatabase::noOdbcDialog);
CRecordset rs;
rs.m_pDatabase =&db;
rs.Open(CRecordset::snapshot,_T("select Key,Value from table where Id=1;"));
CString strValue;
rs.GetFieldValue(L"Key",strValue);
long long key=_wtoi64(strValue);
rs.GetFieldValue(L"Value",strValue);
long long value=_wtoi64(strValue);
rs.Close();
db.Close();
查询ok,值得注意的是我安装的mysql的odbc驱动只能支持CRecordset::snapshot的设置。
但是有更新,添加或者删除操作呢?
于是看CRecordset有更新Update和Add的方法。一直报错。
后来在无意中看见一篇文章,说“使用CRecordset类简单是简单,但是有一个缺陷,就是不能对数据库里面的数据进行添加、删除、插入、修改的操作。不信你可以试试rs.AddNew(),系统一定会提示你错误的”。解决实例如下:
CDatabase m_db;
m_db.Open( _T("ODBC;DSN=mysql;DATABASE=你的数据库名;SERVER=服务器地址;UID=root;PASSWORD=你的密码;"));
//添加
m_db.ExecuteSQL(_T("INSERT INTO test VALUES('333','sdfsd')"));
//修改
m_db.ExecuteSQL(_T("UPDATE test SET 某列='1111'"));
//删除
m_db.ExecuteSQL(_T("DELETE FROM test WHERE 某列='1111'"));
//关闭数据库
m_db.Close();
终于成功了。