VS2010下用c++连接mysql 配置

项目需要,需要用c++连接mysql数据库,这里是官方给出的在VS下的连接步骤:http://dev.mysql.com/doc/refman/5.6/en/connector-cpp-apps-windows-visual-studio.html

但我在连接过程中,发现官网给出的步骤有些问题,现总结我的连接步骤如下,同时指出官网连接教程中的一些出入。

1、下载安装mysql(http://dev.mysql.com/downloads/),安装时注意最好选择安装Connect/c++。严格来说等到后面再在官网下载单独的Connect/c++安装也行,但我自己安装过程中发现,在官网中下载的Connect/c++的zip免安装版,解压后里面没有“lib\opt”这个文件夹,而这个里面的内容是我们后续连接要用的。若下载Connect/c++的.msi安装版本也存在同样的问题。

2、下载并解压缩boost库(http://www.boost.org/),mysql Connect/c++ 里用到了智能指针,所以需要boost库。当然,你也可以注释掉Connect/c++里相关头文件里用到boost库的地方,这样就不用智能指针了,不过建议最好保留。

3、下面就是相关的环境设置,假设mysql安装目录为C:\Program Files\MySQL; 而boost库的目录为C:\Program Files\boost_1_54_0。我只设置成功了动态链接的配置,静态链接下我没试成。

动态链接

     动态链接的debug设置和release设置是相同的,具体如下:

   (1)项目属性页,“c/c++”-"常规"-“附加包含目录”添加相关头文件路径:

           C:\Program Files\boost_1_54_0

           C:\Program Files\MySQL\Connector C++ 1.1.3\include

   (2)项目属性页,“链接器”-“常规”-“附加库目录”添加库文件mysqlcppconn.lib的路径

           C:\Program Files\MySQL\Connector C++ 1.1.3\lib\opt

         “链接器”-“输入”-“附加依赖项”添加库文件

           mysqlcppconn.lib

          

  (3)将目录C:\Program Files\MySQL\Connector C++ 1.1.3\lib\opt下的文件mysqlcppconn.dll(1.1.3版本,该文件大小为582KB),以及目录C:\Program Files\MySQL\MySQL Server 5.6\lib下的文件libmysql.dll,拷贝到工程的debeg(或者release)目录下。

    通过以上步骤,就完成了c++动态链接mysql的基本环境配置,可在官网找相关示例(http://dev.mysql.com/doc/refman/5.6/en/connector-cpp-examples-complete-example-1.html)直接测试。

     和官网给出的步骤的不同点:

    (1)官网是要求在附加包含目录和附加库目录里分别添加路径C:\Program Files\MySQL\MySQL Server 5.6\include和路径C:\Program Files\MySQL\MySQL Server 5.6\lib,附加依赖项添加libmysql.lib。但我试验过,确实不需要。c++连接mysql的相关头文件都在路径C:\Program Files\MySQL\Connector C++ 1.1.3\include下,并不需要再添加C:\Program Files\MySQL\MySQL Server 5.6\include下的头文件。此外,运行只需要动态连接libmysql.dll库即可,编译的时候并不需要添加libmysql.lib。

    (2)官网debug和release的配置是不同的,具体分别在附加库目录,debug是添加路径C:\Program Files\MySQL\Connector C++ 1.1.3\lib\debug,而release是C:\Program Files\MySQL\Connector C++ 1.1.3\lib\opt,同时debug下拷贝mysqlcppconn.dll也是拷贝路径C:\Program Files\MySQL\Connector C++ 1.1.3\lib\debug下的那个mysqlcppconn.dll文件(1.1.3版本下该文件为966KB),但我试验发现,这样设置debug版本是不能正常运行的。一个奇葩的地方是,我附加库目录用C:\Program Files\MySQL\Connector C++ 1.1.3\lib\debug,但mysqlcppconn.dll是拷贝C:\Program Files\MySQL\Connector C++ 1.1.3\lib\opt下的文件mysqlcppconn.dll(1.1.3版本,该文件大小为582KB),却能正常运行。。完全石化了

 

静态链接

   静态链接,区别就是不需要拷贝mysqlcppconn.dll到工程目录,同时将附加依赖项mysqlcppconn.lib改为mysqlcppconn-static.lib,另外需要在”c/c++“-"预处理器"-”预处理器定义“中添加一行”CPPCONN_PUBLIC_FUNC=“,但我按照上面这些做了,还是出现无法解析相关库函数的链接错误,不明所以。有待以后有空慢慢研究。

 

附上测试代码

#include "stdafx.h"
#include <mysql_connection.h> #include <cppconn/driver.h> #include <cppconn/exception.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { try { sql::Driver *driver; sql::Connection *con; sql::Statement *stmt; sql::ResultSet *res; sql::PreparedStatement *pstmt; driver = get_driver_instance(); con = driver->connect("localhost", "user_name", "password"); //选择要连接的数据库 con->setSchema("test"); //设置字符格式 con->setClientOption("characterSetResults", "utf8"); stmt = con->createStatement(); res = stmt->executeQuery("SELECT * from user"); //遍历结果集 while (res->next()) { //这里的ID是user表中的字段名 int id = res->getInt("ID"); cout<<id<<endl; } delete res; delete stmt; delete con; } catch (sql::SQLException &e) { //有异常的情况下,输出异常 cout << "# ERR: SQLException in " << __FILE__; cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl; cout << "# ERR: " << e.what(); cout << " (MySQL error code: " << e.getErrorCode(); cout << ", SQLState: " << e.getSQLState() << " )" << endl; } return 0; }

  

转载于:https://www.cnblogs.com/rolling-stone/p/3373744.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值