vs 2010链接到Mysql数据库
2015-12-06 20:25
555 查看
一.准备工作
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.这时添加测试代码:
[align=left]#include<iostream>[/align]
[align=left]#include<map>[/align]
[align=left]#include<string>[/align]
[align=left]#include<memory>[/align]
[align=left]#include"mysql_driver.h"[/align]
[align=left]#include"mysql_connection.h"[/align]
[align=left]#include"cppconn/driver.h"[/align]
[align=left]#include"cppconn/statement.h"[/align]
[align=left]#include"cppconn/prepared_statement.h"[/align]
[align=left]#include"cppconn/metadata.h"[/align]
[align=left]#include"cppconn/exception.h"[/align]
[align=left]
[/align]
[align=left]usingnamespacestd;[/align]
[align=left]usingnamespacesql;[/align]
[align=left]
[/align]
[align=left]intmain()[/align]
[align=left]{[/align]
[align=left] sql::mysql::MySQL_Driver *driver = 0;[/align]
[align=left] sql::Connection *conn = 0;[/align]
[align=left]
[/align]
[align=left] try[/align]
[align=left] {[/align]
[align=left] driver = sql::mysql::get_mysql_driver_instance();[/align]
[align=left] conn = driver->connect("tcp://localhost:3306/booktik","root","luoxiao");[/align]
cout <<"连接成功|"<<
endl;
[align=left] }[/align]
[align=left] catch(...)[/align]
[align=left] {[/align]
cout <<"连接失败"<<
endl;
[align=left] }[/align]
[align=left] sql::Statement* stat = conn->createStatement();[/align]
stat->execute("set
names 'gbk'");
[align=left] ResultSet *res;[/align]
res = stat->executeQuery("SELECT
* FROM BOOK4");
[align=left] while(res->next())[/align]
[align=left] {[/align]
cout <<"BOOKNAME:"<<
res->getString("bookname")
<< endl;
cout <<"
SIZE:"<< res->getString("size")
<< endl;
[align=left] }[/align]
if(conn
!= 0)
[align=left] {[/align]
[align=left] deleteconn;[/align]
[align=left] }[/align]
[align=left] system("pause");[/align]
[align=left]}[/align]
9.编译后出现文件mysql_connection.h
在其中出现关于
[align=left]#include<boost/shared_ptr.hpp>[/align]
[align=left]#include<boost/scoped_ptr.hpp>[/align]
[align=left] 的报错,百度发现是缺少boost库[/align]
[align=left]10.安装boost库[/align]
[align=left]
[/align]
[align=left]在官网下载boost压缩包,解压到D盘;双击D:\boost_1_51_0目录下的bootstrap.dat生成两个文件[/align]
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 |
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
[align=left]intmain(){[/align][align=left] sql::mysql::MySQL_Driver *driver;[/align]
[align=left] sql::Connection *con;//链接到数据库[/align]
[align=left] sql::Statement *stmt;//执行命令的[/align]
[align=left] //链接到数据库[/align]
[align=left] driver = sql::mysql::get_mysql_driver_instance();[/align]
con = driver->connect("tcp://127.0.0.1:3306","root","luoxiao");//登陆
[align=left]
[/align]
[align=left] stmt = con->createStatement();[/align]
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')");//对表进行赋值
[align=left]
[/align]
[align=left] deletestmt;[/align]
[align=left] deletecon;[/align]
[align=left]
[/align]
[align=left] return0;[/align]
[align=left]
[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left] sql::ResultSet *res;[/align]
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;}
[align=left]//访问数据表中的每一份数据[/align]
三.在
VS 2010中使用c++
向Mysql中插入变量
,
关于字符串拼接的问题
若id为int型变量,label
为varchar;
需要将
id转化为string
类型,具体代码如下:
[align=justify]char buf[10];[/align]
[align=justify]sprint(buf,”%d”,id);[/align]
[align=justify]string str_id = buf;[/align]
[align=justify]stmt->execute( “INSERT INTO test(id, label) VALUES (“+str_id+”,’”+label+”’)”);[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- Android之获取手机上的图片和视频缩略图thumbnails
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 数据库链接字符串查询网站
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法