使用MySQL connector/C++链接MySQL数据库

本文详细介绍了使用C++连接MySQL数据库的全过程,并针对在Visual Studio 2008环境下Debug版本中遇到的问题进行了深入分析与解决策略分享。包括环境配置、表创建、数据操作等关键步骤,以及Debug版本中lib文件使用注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先去MySQL官网下载MySQL connector/C++:http://dev.mysql.com/downloads/connector/cpp/1.0.html
  下载第二个包,windows32位非安装版(个人觉得这个包干净)。目前的版本是Connector/C++ 1.0.5。
Windows (x86, 32-bit), ZIP Archive (mysql-connector-c++-noinstall-1.0.5-win32.zip)

  将整个包解压到项目文件夹下的的源文件目录。文件夹名字太长,将“mysql-connector-c++-noinstall-1.0.5-win32”改为“mysql”。

  下面要配置vs2008的环境。
  1. 项目属性页->C/C++->General->Additional Include Directories。将mysql/include目录和mysql/include/cppconn目录添加进去。
  2. 项目属性页->Linker->General->Additional Library Directories。将mysql/lib目录添加进去。
  3. 项目属性页->Linker->Input->Additional Dependencies。添加这两项mysqlcppconn.lib,mysqlcppconn-static.lib(mysql/lib目录下的两个.lib文件)
  4. 将mysql/lib下的mysqlcppconn.dll文件复制到windows/system32文件夹下。
  环境配置完毕。

  在连接数据库之前,先建立一张表。 (其实这些可以在代码中完成,我这样是为了让测试代码尽可能简练易查错)
  打开控制台,输入mysql -u root -p,输入密码。
  查看当前已有的数据库。(SQL语句末尾加上';'表示立即执行当前语句。)
mysql> show databases;

  创建数据库
mysql> create database test;

  使用数据库(这句不能加分号)
mysql> use test

  查看已有的表
mysql> show tables;

  创建表
mysql> create table testuser ( id INT, name CHAR(20));

  插入数据
mysql> insert into testuser(id, name) values(1001, 'google');
mysql> insert into testuser(id, name) values(1002, 'kingsoft');
mysql> insert into testuser(id, name) values(1003, 'firefox');

  现在在C++中查询这些数据

#include "stdafx.h"   
#include <mysql_connection.h>   
#include <mysql_driver.h>   
#include <statement.h>   
using namespace sql;   
using namespace std;   
void RunConnectMySQL()    
{   
    mysql::MySQL_Driver *driver;   
    Connection *con;   
    Statement *state;   
    ResultSet *result;   
    // 初始化驱动   
    driver = sql::mysql::get_mysql_driver_instance();   
    // 建立链接   
    con = driver->connect("tcp://127.0.0.1:3306", "root", "123");   
    state = con->createStatement();   
    state->execute("use test");   
    // 查询   
    result = state->executeQuery("select * from testuser where id < 1002");   
    // 输出查询   
    while(result->next())   
    {   
        int id = result->getInt("ID");   
        string name = result->getString("name");   
        cout << id << " : " << name << endl;   
    }   
    delete state;   
    delete con;   
}   
int _tmain(int argc, _TCHAR* argv[])   
{   
    RunConnectMySQL();   
    getchar();   
    return 0;   
}  

 

以上是转载的网上的例子

///////////////////////////////////////////////////////////////////////

但在实际的操作过程中,却遇到了新的问题。

当我按照上面的步骤,依次完成Demo版本的检验,但在Debug版本下,却无法使用(VS2008)。

 3. 项目属性页->Linker->Input->Additional Dependencies。添加这两项mysqlcppconn.lib,mysqlcppconn-static.lib(mysql/lib目录下的两个.lib文件)

 当添加完这两个lib文件后,进行Debug调色运行,当运行到string name = result-getString("name");时出现错误。

是什么原因导致的呢!因为mysqlcppconn.lib或mysqlcppconn-static.lib是Release版本下的,不能做Debug版本的程序。string或vertor在释放内存时会报错。可能在编译时的依赖顺序不一样。

可在项目属性页->Linker->Input->Additional Dependencies。中添加msvcrt.lib msvcprt.lib 两个lib文件。使其支持Debug的调试。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值