C++连接MYSQL数据库(使用MYSQL API方式,环境VS2013+MYSQL5.6)
2015-04-01 17:33
399 查看
转载请注明出处,原文地址http://blog.csdn.net/zenki_kong/article/details/44810243
首先交代一下开发环境,64位mysql5.6.23+VS2013+64位WIN7,32位的话大同小异
本篇是直接使用mysql api,下一篇博客应该会讲使用mysql connector c++来让c++连接mysql
mysql connector c++连接mysql 请看:http://blog.csdn.net/zenki_kong/article/details/44810535
刚开始写博客,博主还只是个大三汪,学艺不精,如有错误还请前辈指出(>^ω^<),废话不多说啦,进入正文
一开始用mysql5.7.6提示缺少binary_log_types.h,搜了整个文件夹都没这个文件,于是就用5.6吧
1.要使用mysql的api,需要mysql目录下include和lib两个文件夹的东西,如果你用的是wamp或者phpstudy,里面的mysql可能没这两个文件夹,那么去下个解压版的mysql就可以了,我用的是64位的mysql5.6.23安装版
2.这点很重要,先提前把这个说了
博主一开始就卡在这里,就说怎么编译不通过呢(ㄒoㄒ)//,各种无法解析外部符号,研究了半天,发现原因在于数据库是64位版的,而程序平台是32位的(毕竟我开发经验没多少……(>﹏<))。所以我们要先设置一下平台,如果你是32位的Mysql,大概可以跳过这步。
打开配置管理器
右上角 活动解决方案平台 点新建
3.在vs2013中打开项目-属性,把include和lib两个文件夹包含进来,具体路径看个人吧,如果你是安装版,就在mysql server根目录下(我是直接安装在mysql根目录)。如果你是包含了之后再改64位/32位平台,可能要重新包含一次,所以我提前说了平台问题。
先来看看这两个文件夹有啥
然后包含进来
4.把lib文件夹里的 libmysql.dll 复制到你的项目目录中(就是放h和cpp的那里)
5.外面的事情解决完了,最后就是代码了
首先是要包含的头文件和库,听说头文件顺序交换会有问题,你们可以试试,因为我项目本身很早就包含了winsock2.h,就不试拉,我也很懒的(^。^)y-~~
然后就是测试用的主要代码,当然测试之前你需要建立一个表,类和函数使用之类就自行度娘查吧。。。其实也很显然易懂
定义三个变量
然后是数据库操作的代码
上面的代码,没有过多的错误检测,因为几行代码而已,有问题的话注释测测吧,可以使用
unicode下用Cstring会很麻烦,直接转换类型是不行的(只会保留第一个字符),于是查询语句就出错咯
顺便给初学者留个问题,这句会造成内存泄漏吗(大神就无视吧哈)
char *sql = "select * from user";
sql="I am Zenki Kong"//那加多这一句呢?会不会造成内存泄漏?
至此,如无意外就成功了!!!
但是个人感觉使用connector连接用起来更加方便,所以写完这个博客后我已经开始着手了,如果成功我也会写博客,有兴趣的同学可以留意一下。
目前了解到C++连接mysql的方法有三种,ado、直接使用mysql api还有就是connector c++
顺便问一下路过的大神,不同的连接方式对数据库的效率有影响吗?请问哪一种效率最高?
首先交代一下开发环境,64位mysql5.6.23+VS2013+64位WIN7,32位的话大同小异
本篇是直接使用mysql api,下一篇博客应该会讲使用mysql connector c++来让c++连接mysql
mysql connector c++连接mysql 请看:http://blog.csdn.net/zenki_kong/article/details/44810535
刚开始写博客,博主还只是个大三汪,学艺不精,如有错误还请前辈指出(>^ω^<),废话不多说啦,进入正文
一开始用mysql5.7.6提示缺少binary_log_types.h,搜了整个文件夹都没这个文件,于是就用5.6吧
1.要使用mysql的api,需要mysql目录下include和lib两个文件夹的东西,如果你用的是wamp或者phpstudy,里面的mysql可能没这两个文件夹,那么去下个解压版的mysql就可以了,我用的是64位的mysql5.6.23安装版
2.这点很重要,先提前把这个说了
博主一开始就卡在这里,就说怎么编译不通过呢(ㄒoㄒ)//,各种无法解析外部符号,研究了半天,发现原因在于数据库是64位版的,而程序平台是32位的(毕竟我开发经验没多少……(>﹏<))。所以我们要先设置一下平台,如果你是32位的Mysql,大概可以跳过这步。
打开配置管理器
右上角 活动解决方案平台 点新建
3.在vs2013中打开项目-属性,把include和lib两个文件夹包含进来,具体路径看个人吧,如果你是安装版,就在mysql server根目录下(我是直接安装在mysql根目录)。如果你是包含了之后再改64位/32位平台,可能要重新包含一次,所以我提前说了平台问题。
先来看看这两个文件夹有啥
然后包含进来
4.把lib文件夹里的 libmysql.dll 复制到你的项目目录中(就是放h和cpp的那里)
5.外面的事情解决完了,最后就是代码了
首先是要包含的头文件和库,听说头文件顺序交换会有问题,你们可以试试,因为我项目本身很早就包含了winsock2.h,就不试拉,我也很懒的(^。^)y-~~
#include <WinSock2.h> #include "mysql.h" #pragma comment(lib,"wsock32.lib") #pragma comment(lib,"libmysql.lib")
然后就是测试用的主要代码,当然测试之前你需要建立一个表,类和函数使用之类就自行度娘查吧。。。其实也很显然易懂
定义三个变量
MYSQL mysql; MYSQL_RES *result; MYSQL_ROW row;
然后是数据库操作的代码
mysql_init(&mysql); mysql_real_connect(&mysql, "localhost", "root", "root", "dnd", 3306, NULL, 0); char *sql = "select * from user";//unicode下用Cstring会很麻烦,直接用char mysql_query(&mysql, sql); result = mysql_store_result(&mysql); while ((row = mysql_fetch_row(result))!=NULL) { ShowText(row[1]);//这里是个显示的函数,控制台可以用cout }
上面的代码,没有过多的错误检测,因为几行代码而已,有问题的话注释测测吧,可以使用
unicode下用Cstring会很麻烦,直接转换类型是不行的(只会保留第一个字符),于是查询语句就出错咯
顺便给初学者留个问题,这句会造成内存泄漏吗(大神就无视吧哈)
char *sql = "select * from user";
sql="I am Zenki Kong"//那加多这一句呢?会不会造成内存泄漏?
至此,如无意外就成功了!!!
但是个人感觉使用connector连接用起来更加方便,所以写完这个博客后我已经开始着手了,如果成功我也会写博客,有兴趣的同学可以留意一下。
目前了解到C++连接mysql的方法有三种,ado、直接使用mysql api还有就是connector c++
顺便问一下路过的大神,不同的连接方式对数据库的效率有影响吗?请问哪一种效率最高?
相关文章推荐
- C++连接MYSQL数据库(使用MYSQL API方式,环境VS2013+MYSQL5.6)
- vs2013下c++连接mysql数据库
- Vs2013 如何使用EF6来连接mysql数据库
- VS2013 使用MySQL API连接数据库
- C/C++代码静态检查工具Cppcheck在VS2013开发环境中的安装配置和使用
- vs2013连接mysql数据库并使用EntityFramework技术db first
- C++连接MySQL(二):环境配置和实例 使用api方式
- vs2013下使用mysql connector连接mysql数据库
- 【C++】VS2013配置C/C++多线程使用环境
- 【Caffe的C++接口使用说明五)】win10+cuda7.5+caffe+vs2013环境搭建(CPU版本)
- vs2013下C/C++连接mysql数据库相关问题
- 使用VS2013 + EF6 + .NET4.5 连接Mysql数据库
- vs2013下c++连接mysql数据库
- 使用VS2013 + EF6 + .NET4.5 连接Mysql数据库
- c++ vs2013 连接mysql数据库 如何配置数据库
- 使用VS2013 + EF6 连接Mysql数据库
- C++连接mysql数据库简单小例子(使用ODBC)
- iocomp控件-iPlotX在vs2013 mfc环境下的使用
- VS2013中CUDA和C++混合编译(两种方式)
- ubuntu14环境下使用python连接MySQL数据库