关于mysql的 C API 的常用用法
2015-05-07 13:11
323 查看
C API 代码是随MySQL发布的, 它被包含在mysqlclient库且允许C程序存取一个数据库。
具体每个MySql C API 的函数解释 以及参数作用可以参考http://m.blog.csdn.net/blog/zxh2075/19285685
首先看一下数据结构
MYSQL 这个结构表示对一个数据库连接的句柄,它被用于几乎所有的MySQL函数。
MYSQL_RES 这个结构代表返回行的一个查询的结果。 从查询返回的信息称为结果集合
MYSQL_ROW 这是一个行数据的类型安全(type-safe)的表示。当前他实现为一个计数字节的字符串数组。
MYSQL_FIELD 这个结构包含字段信息, 例如字段名, 类型 和大小。 可以通过重复调用mysql_fetch_field()对每一列获得MYSQL_FIELD结构。字段值不是这个结构的部分,它们被包含在MYSQL_ROW结构中。
以下是其中常用的api函数
mysql_affected_rows() 返回被最新的update, delete或 insert 查询影响的行数。
mysql_close() 关闭一个服务器连接
mysql_erro() 返回最近被调用的MySQL函数的出错编号
mysql_fetch_row() 从结果集合中取得下一行
mysql_field_count() 返回最近查询的结果列的数量
mysql_init() 获得或初始化一个MySQL结构。
mysql_num_Rows() 返回一个结果集合中的行的数量。
mysql_query() 执行指定为一个空结尾的字符串的SQL查询
mysql_real_connect() 连接一个MySQL服务器
mysql_real_query() 执行指定为带技术的字符串的SQL查询
字段类型。 类型值可以是下标所列的MYSQL_TYOE符号之一
MYSQL_TYPE_TINY TINYINT类型
MYSQL_TYPE_SHORT SMALLINT类型
MYSQL_TYPE_LONG INTEGER类型
MYSQL_TYPE_INT24 MEDIUMINT字段
MYSQL_TYPE_LONGLONG BIGINT字段
MYSQL_TYPE_DECIMAL DECIMAL或NUMERIC字段
MYSQL_TYPE_FLOAT FLOAT字段
MYSQL_TYPE_DOUBLE DOUBLE或REAL字段
MYSQL_TYPE_BIT BIT字段
MYSQL_TYPE_TImESTAMP TIMESTAMP字段
MYSQL_TYPE_DATE DATE字段
MYSQL_TYPE_TIME TIME字段
MYSQL_TYPE_DATETIME DATETIME字段
MYSQL_TYPE_YEAR YEAR字段
MYSQL_TYPE_STRING VARCHAR字段
MYSQL_TYPE_BLOB BLOB或TEXT字段
MYSQL_TYPE_SET SET字段
MYSQL_TYPE_ENUM ENUM字段
MYSQL_TYPE_GEOMETRY Spatial字段
MYSQL_TYPE_NULL NULL_type字段
MYSQL_TYPE_CHAR 不再重现,用MYSQL_TYPE_TINY取代
与MySql交互时,的一般原则
1 通过调用mysql_library_init(), 初始化MySql库。
2 通过调用mysql_init()初始化连接处理程序,并通过调用mysql_real_connect()连接到服务器。
3 发出SQL语句并处理其内容
4通过调用mysql_close(), 关闭与MySQL服务器的连接。
5 通过调用mysql_library_end(), 结束MySql库的使用
上面都是理论,程序员还是要通过代码看本质。 一下举几个例子
一 连接数据库, 并执行简单的查询语句
在写连接MySQL数据库之前要把配置先搞好,具体搞法先看下这个链接http://www.cnblogs.com/justinzhang/archive/2011/09/23/2185963.html
之后的例子中我会具体说明
具体每个MySql C API 的函数解释 以及参数作用可以参考http://m.blog.csdn.net/blog/zxh2075/19285685
首先看一下数据结构
MYSQL 这个结构表示对一个数据库连接的句柄,它被用于几乎所有的MySQL函数。
MYSQL_RES 这个结构代表返回行的一个查询的结果。 从查询返回的信息称为结果集合
MYSQL_ROW 这是一个行数据的类型安全(type-safe)的表示。当前他实现为一个计数字节的字符串数组。
MYSQL_FIELD 这个结构包含字段信息, 例如字段名, 类型 和大小。 可以通过重复调用mysql_fetch_field()对每一列获得MYSQL_FIELD结构。字段值不是这个结构的部分,它们被包含在MYSQL_ROW结构中。
以下是其中常用的api函数
mysql_affected_rows() 返回被最新的update, delete或 insert 查询影响的行数。
mysql_close() 关闭一个服务器连接
mysql_erro() 返回最近被调用的MySQL函数的出错编号
mysql_fetch_row() 从结果集合中取得下一行
mysql_field_count() 返回最近查询的结果列的数量
mysql_init() 获得或初始化一个MySQL结构。
mysql_num_Rows() 返回一个结果集合中的行的数量。
mysql_query() 执行指定为一个空结尾的字符串的SQL查询
mysql_real_connect() 连接一个MySQL服务器
mysql_real_query() 执行指定为带技术的字符串的SQL查询
字段类型。 类型值可以是下标所列的MYSQL_TYOE符号之一
MYSQL_TYPE_TINY TINYINT类型
MYSQL_TYPE_SHORT SMALLINT类型
MYSQL_TYPE_LONG INTEGER类型
MYSQL_TYPE_INT24 MEDIUMINT字段
MYSQL_TYPE_LONGLONG BIGINT字段
MYSQL_TYPE_DECIMAL DECIMAL或NUMERIC字段
MYSQL_TYPE_FLOAT FLOAT字段
MYSQL_TYPE_DOUBLE DOUBLE或REAL字段
MYSQL_TYPE_BIT BIT字段
MYSQL_TYPE_TImESTAMP TIMESTAMP字段
MYSQL_TYPE_DATE DATE字段
MYSQL_TYPE_TIME TIME字段
MYSQL_TYPE_DATETIME DATETIME字段
MYSQL_TYPE_YEAR YEAR字段
MYSQL_TYPE_STRING VARCHAR字段
MYSQL_TYPE_BLOB BLOB或TEXT字段
MYSQL_TYPE_SET SET字段
MYSQL_TYPE_ENUM ENUM字段
MYSQL_TYPE_GEOMETRY Spatial字段
MYSQL_TYPE_NULL NULL_type字段
MYSQL_TYPE_CHAR 不再重现,用MYSQL_TYPE_TINY取代
与MySql交互时,的一般原则
1 通过调用mysql_library_init(), 初始化MySql库。
2 通过调用mysql_init()初始化连接处理程序,并通过调用mysql_real_connect()连接到服务器。
3 发出SQL语句并处理其内容
4通过调用mysql_close(), 关闭与MySQL服务器的连接。
5 通过调用mysql_library_end(), 结束MySql库的使用
上面都是理论,程序员还是要通过代码看本质。 一下举几个例子
一 连接数据库, 并执行简单的查询语句
在写连接MySQL数据库之前要把配置先搞好,具体搞法先看下这个链接http://www.cnblogs.com/justinzhang/archive/2011/09/23/2185963.html
之后的例子中我会具体说明
#include <iostream> #include <WinSock2.h> #include <Windows.h> #include "mysql.h" MYSQL* con; // 数据库的连接句柄 MYSQL_RES* res; // 查询的结果集合 MYSQL_ROW row; // 行数据 int main() { char szTmp[512]; char szUser[30] = "root"; char szPasswd[30] = "123456"; char szIp[30] = "localhost"; // 这个位置的ip必须与你的数据库的ip一致 char szDBName[30] = "fktestdb"; // 初始化连接句柄 con = mysql_init((MYSQL*)0); if (con == NULL) return 0; // 连接Mysql MYSQL* pTmp = mysql_real_connect(con, szIp, szUser, szPasswd, szDBName, 3306, NULL, 0); if (pTmp == NULL) return 0; // 查询语句 strcpy(szTmp, "select * from mcftest"); int rt = mysql_real_query(con, szTmp, strlen(szTmp) ); res = mysql_store_result(con); // 将结果保存在res的结构体中 // mysql_data_seek(res, 0);<span style="white-space:pre"> 这个函数设置当前光标在第几行</span> row = mysql_fetch_row(res); // 开始光标是在第一行的所以不需要设置 printf("id:%d\n", atoi(row[0])); // mysql_fetch_field(res); row = mysql_fetch_row(res); // 每调用一次mysql_fetch_row() 光标就往下走一步 printf("id:%d\n", atoi(row[0])); row = mysql_fetch_row(res); printf("id:%d\n", atoi(row[0])); getchar(); return 0; }
相关文章推荐
- MySql与SqlServer的一些常用用法的差别(转)
- 关于mysql的一些常用语句
- 关于mysql的case when用法
- 一个比较常用的关于php下的mysql数据操作类
- MySql与SqlServer的一些常用用法的差别
- MySql与SqlServer的一些常用用法的差别
- 关于 常用的Banner一些简单用法 站在巨人的肩膀上
- mysql中limit的用法详解[数据分页常用]
- MySQL之常用C API详述
- 关于mysql 简单的查询语句 以及常用函数的 总结
- MySQL——union(合并结果集)、limit(获取部分数据)、关于MySQL中常用数据类型
- mysql中limit的用法详解[数据分页常用]
- mysql 常用命令用法总结脚本之家整理版
- 关于MySQL里的found_row()和row_count()解释及用法(很好很强大!!!)
- 关于mysql 简单的查询语句 以及常用函数的 总结
- 关于几款系统恢复常用工具的用法介绍
- mysql中limit的用法详解[数据分页常用]
- mysql中limit的用法详解[数据分页常用]
- 关于mysql 和oracle 的常用字符串操作
- 关于Jquery-easyUi的常用用法