C++与MySQL的接口(Windows)

来源:互联网 发布:lol刷金币软件 编辑:程序博客网 时间:2024/05/21 07:04

C++连接mysql的话应该说有两种方法:一种是通过mysql自身的接口函数,如下边所示;一种是通过odbc连接,如http://www.cnblogs.com/jpa2/archive/2012/05/30/2526299.html,本文只介绍第一种。

本文转自:http://scut-cottontang.blog.sohu.com/116994925.html

花了两天的时间,终于基本搞明白C++与开源数据库软件MySQL的接口问题了。网上很多资料说得都很散,来,看兄弟我来总结一下这其中碰到的问题,同时也为每个问题提供一个解决方案:

1 需要什么头文件?

标准C++没有提供专门的数据库操作接口函数,相应的接口函数都由第三方提供。MySQL本身提供了这些接口函数,因此我们要把它们导入到项目中。这里要注意的是,安装MySQL时,要选上安装开发组件,安装后才会包含这些头文件,而接口函数就由这些头文件和lib等文件提供。MySQL似乎没公开这些接口函数的实现代码,而是封装进了静态库文件libmysql.lib和动态库文件libmysql.dll.

所以我们首先要做两个事情:

1.1 把MySQL安装目录的MySQL Server 5.0\lib\debug下面的两个文件libmysql.lib和libmysql.dll,复制到C++工程项目文件夹里。

1.2 把MySQL安装目录下的include文件夹,复制到C++工程项目文件夹里。

然后,在用到这些接口函数里添加头文件等:

#pragma comment(lib,"libmysql.lib")  //把库文件载入C++项目
#include <WinSock2.h>
#include "include\mysql.h"

上面的这个方法,只是其中的一个解决方法。

 

 

2 怎么连接到一个已经存在的MySQL数据库?

可以用mysql_real_connect来连接数据库,用完后记得要用mysql_close断开这个连接.
比如完整的代码如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 连接到数据库后,怎样执行一条SQL语句?

用函数mysql_query,或者mysql_real_query。后者速度更快
如果数据库含有二进制数据,则可能以\0结尾,那样的话就必须用mysql_real_query.
    string sql_cmd = "select * from mytable";
    //ret = mysql_query( &obj_sql, sql_cmd.c_str() );
    ret = mysql_real_query( &obj_sql, sql_cmd.c_str(), sql_cmd.length() );
    
    比较完整的用法是:

   

 

 

 

 

事实上,update/insert/alter等基本的SQL语句都是用这两个函数来执行的。
    sql_cmd = "update mytable set sigle = 'y' where name = 'rachel'"; //修改某记录
    sql_cmd = "alter table mytable drop column sigle";  //删除一列
    sql_cmd = "alter table mytable add column single char(1)";//添加列

 4 怎样查看查询的结果?

4.1 获取查询结果
    在使用了mysql_real_query进行了Select查询之后,可以用mysql_store_result来收集查询结果,用完后
    记得用mysql_free_result来释放内存:

MYSQL_RES *res_ptr = NULL;res_ptr = mysql_store_result( &obj_sql );  //收集查询结果if ( res_ptr ){    cout << "rows number: " << (unsigned long)mysql_num_rows(res_ptr) << endl;    //此处加入数据处理的代码}mysql_free_result(res_ptr);  //释放结果集使用的内存

 

4.2 显示字段名
    用mysql_store_result收集了查询结果后,可用mysql_fetch_fields来收集所有字段:

 

 

 

 

 

 

 4.3 显示查询到的数据:
    用mysql_store_result收集了查询结果后,可用mysql_fetch_row函数来获得结果的下一行的内容: 

 

 

 

 

 

 

 

 

 

 综合上面三个分点,查看查询结果的代码的一种实现方法:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 运行结果

把上面几点的代码结合起来应用,也就是:

    连接到数据库
    查询数据库中的一个表的所有内容
    显示字段名
    显示查询到的所有记录
    关系数据库连接

则运行结果如下图所示:

原创粉丝点击