MFC操作MySQL数据库注意事项

时间:2022-05-11 06:41:10

没有使用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的方法。一直报错。MFC操作MySQL数据库注意事项

后来在无意中看见一篇文章,说“使用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();

终于成功了。