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 运行结果
把上面几点的代码结合起来应用,也就是:
连接到数据库
查询数据库中的一个表的所有内容
显示字段名
显示查询到的所有记录
关系数据库连接
则运行结果如下图所示:
- C++与MySQL的接口(Windows)
- C++与MySQL的接口(Windows)
- MYSQL的C 语言接口
- MYSQL的C 语言接口
- MySQL与C/C++接口应用学习
- mysql的C语言接口的使用
- mysql的C语言接口的使用
- MySQL的C语言接口大全
- MySQL的C语言接口大全
- MySQL的C语言API接口
- MySQL的C语言接口大全
- MySQL的C语言API接口
- 总结MySQL 的C语言接口使用
- MySQL的Embedded模式C接口
- 【SQL】MySQL的C语言接口学习
- mysql的c函数接口以及c++接口的对比
- mysql c 接口大全
- mysql C接口大全
- 经典的sql语句
- socket中accept函数的更深理解
- 哪位大师知道Linux SuSE下的这个文件夹:/sys/kernel/debug/(debugfs的挂载点)
- browser action mode ---windowActionModeOverlay='true' ---titlebar
- Linux驱动中自动创建节点
- C++与MySQL的接口(Windows)
- Merge into: Oracle中用一条SQL语句直接进行Insert/Update的操作
- python中关于__name__和__main__的理解
- (八) MySQL事务
- ASP.NET+C# 委托
- extern相关问题
- Oracle 使用RMAN 将 DB 从10g 直接 Restore 到11g 示例
- 算法导论 11.2-4 散列表内未占用槽链接成自由链表
- Internal Error (classFileParser.cpp:3075), pid=520, tid=3636 Error: ShouldNotReachHere() .