vs 2010链接到Mysql数据库

一.准备工作

1.下载Mysql的Connecter :connector c/c++,含有include和lib两个文件夹 ;
2.新建一个vc++ 空项目;解决方案平台 win 64
3.项目属性->"C/C++"->常规,在“附加包含目录”中   将"include"及"include\cppconn"的路径包含进来。
4.若在debug下,属性->配置属性->链接器->常规,在“附加库目录”中将"lib"文件夹下的子文件夹"debug"的路径包含进来。若在release下,则将"opt"的路径包含进来。(我的情况是只有opt文件夹,但是改为release后会增加很多报错)
5.属性->配置属性->链接器->输入,在“附加依赖项”中添加"mysqlcppconn.lib,mysqlcppconn-static.lib"这两项(这两项其实是"lib"文件夹下的两个lib文件),还要将这两项放在项目目录之下;

6.将"MySQL Connector C++ 1.0.5\lib\debug"下的"mysqlcppconn.dll"文件复制到windows\system32文件夹下或直接复制到项目所在路径下的debug文件夹下。(release下类似,复制"...\lib\opt"下的即可\\我的仍然只有opt)

7.将"MySQL安装目录\lib\opt"下的"libmysql.dll"文件复制到windows\system32文件夹下。(可能是因为更新的缘故,我的在C:\Program Files\MySQL\MySQL Connector.C 6.1\lib目录下)
8.这时添加测试代码:

#include <iostream>
#include <map>
#include <string>
#include <memory>
#include "mysql_driver.h"
#include "mysql_connection.h"
#include "cppconn/driver.h"
#include "cppconn/statement.h"
#include "cppconn/prepared_statement.h"
#include "cppconn/metadata.h"
#include "cppconn/exception.h"

using namespace std;
using namespace sql;

int main()
{
    sql::mysql::MySQL_Driver *driver = 0;
    sql::Connection *conn = 0;

    try
    {
        driver = sql::mysql::get_mysql_driver_instance();
        conn = driver->connect( "tcp://localhost:3306/booktik" , "root" , "luoxiao" );
        cout << "连接成功|" << endl;
    }
    catch (...)
    {
        cout << "连接失败" << endl;
    }
    sql::Statement* stat = conn->createStatement();
    stat->execute( "set names 'gbk'" );
    ResultSet *res;
    res = stat->executeQuery( "SELECT * FROM BOOK4" );
    while (res->next())
    {
        cout << "BOOKNAME:" << res->getString( "bookname" ) << endl;
        cout << "    SIZE:" << res->getString( "size" ) << endl;
    }
    if (conn != 0)
    {
        delete conn;
    }
    system( "pause" );
}
9.编译后出现文件mysql_connection.h
在其中出现关于
#include <boost/shared_ptr.hpp>
#include <boost/scoped_ptr.hpp>
  的报错,百度发现是缺少boost库
10.安装boost库

在官网下载boost压缩包,解压到D盘;双击D:\boost_1_51_0目录下的bootstrap.dat生成两个文件
b2.exe;bjam.exe

进入目录D:\boost_1_51_0\tools\build\v2,修改文件user-config.jam
# MSVC configuration
# Configure msvc (default version, searched for in standard locations and PATH).
# using msvc ;
这段的下面直接添加如下的文字。
#using    msvc:10.0::/wd4819/D_CRT_SECURE_NO_DEPRECATE/D_SCL_SECURE_NO_DEPRECATE/D_SECURE_SCL=0;

点击开始->所有程序->“Microsoft Visual Studio 2010”,指向“Visual Studio tools(工具)”,然后单击“Visual Studio 2010 command prompt。将目录切换到D:\boost_1_51_0
运行
b2 toolset=msvc-10.0architecture=x64 instruction-set=i686 address-model=64 link=static variant=debug,release threading=multi runtime-link=shared stage(64代表64位)
命令的意思:
1).toolset:表示编译器工具,我安装的是VS2010,所以是msvc-10(如果你是VS2005,可以使用msvc-8.0 VS2008是msvc-9.0)
2).architecture:表示架构,也就是你的CPU架构,x86,x64,因为我安装的是64位,所以使用了x64的架构
3).instruction-set:表示指令集,依然是8086指令集
4).address-model:表示地址长度为64位
5).link:表示生成动态/静态链接库,动态链接库是shared,静态链接库是static,一般都会编译成静态库,因为给出程序的时候打包boost的库会非常庞大
6).variant:表示生成的Debug或者release版本,一般情况下会两种版本都会编译出来的
7).threading:表示单/多线程编译,一般我们的程序都会用到多线程,所以选择了multi


8).runtime-link:表示动态/静态链接C/C++运行时库(C/C++ Runtime),我们选择了动态链接
9).stage/install:stage表示只生成库文件(DLL和Lib),install还会生成包含头文件的include目录,推荐使用stage,因为boost_1_49\boost中就是boost库完整的头文件,所以无需再拷贝一份出来。编译出来的库会放在stage文件夹中
10.

然后工程属性。配置属性->C/C++ ,附加包含目录
填上
D:\boost_1_51_0;%(AdditionalIncludeDirectories)
这个是最终的结果,你也可以手动添加

在左侧选择链接器->附加库目录,填上
D:\boost_1_51_0\stage\lib;%(AdditionalLibraryDirectories)
此时关于boost的报错消失

二.MySQL Connector/C++ Running a Simple Query


int main(){
   sql::mysql::MySQL_Driver *driver;
   sql::Connection *con;//链接到数据库
   sql::Statement *stmt;//执行命令的
   //链接到数据库
   driver = sql::mysql::get_mysql_driver_instance();
   con = driver->connect( "tcp://127.0.0.1:3306" , "root" , "luoxiao" );//登陆

   stmt = con->createStatement();
   stmt->execute( "USE  luo" );//使用某一个数据库
   stmt->execute( "DROP TABLE IF EXISTS test" );//如果test表存在则删除
   stmt->execute( "CREATE TABLE test(id INT, label CHAR(1))" );//重新建立一个test表,含有id 和 label两个数据
   stmt->execute( "INSERT INTO test(id, label) VALUES (1, 'a')" );//对表进行赋值

   delete stmt;
   delete con;

   return 0;

}



   sql::ResultSet  *res;
   res = stmt->executeQuery( "SELECT id, label FROM test ORDER BY id ASC" );
   while (res->next()) {
  // You can use either numeric offsets...
   cout << "id = " << res->getInt(1); // getInt(1) returns the first column
  // ... or column names for accessing results.
  // The latter is recommended.
   cout << ", label = '" << res->getString( "label" ) << "'" << endl;}
//访问数据表中的每一份数据

三.在 VS 2010中使用c++ Mysql中插入变量 , 关于字符串拼接的问题

id int 型变量, label varchar;
需要将 id 转化为 string 类型,具体代码如下:
char buf[10];
sprint(buf,”%d”,id);
string str_id = buf;
stmt->execute( “INSERT INTO test(id, label) VALUES (“+str_id+”,’”+label+”’)”);





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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值