用C语言操作MySQL数据库
2015-10-12 11:37
501 查看
参考MYSQL的帮助文档整理
这里归纳了C API可使用的函数,并在下一节详细介绍了它们。请参见25.2.3节,“C API函数描述”。
函数描述
mysql_affected_rows()
返回上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。
mysql_autocommit(); 切换 autocommit模式,ON/OFF
mysql_change_user(); 更改打开连接上的用户和数据库。
mysql_charset_name(); 返回用于连接的默认字符集的名称。
mysql_close(); 关闭服务器连接。
mysql_commit(); 提交事务。
mysql_connect(); 连接到MySQL服务器。该函数已不再被重视,使用mysql_real_connect()取代。
mysql_create_db(); 创建数据库。该函数已不再被重视,使用SQL语句CREATE DATABASE取而代之。
mysql_data_seek(); 在查询结果集中查找属性行编号。
mysql_debug(); 用给定的字符串执行DBUG_PUSH。
mysql_drop_db(); 撤销数据库。该函数已不再被重视,使用SQL语句DROP DATABASE取而代之。
mysql_dump_debug_info(); 让服务器将调试信息写入日志。
mysql_eof(); 确定是否读取了结果集的最后一行。该函数已不再被重视,可以使用mysql_errno()或mysql_error()取而代之。
mysql_errno(); 返回上次调用的MySQL函数的错误编号。
mysql_error(); 返回上次调用的MySQL函数的错误消息。
mysql_escape_string(); 为了用在SQL语句中,对特殊字符进行转义处理。
mysql_fetch_field(); 返回下一个表字段的类型。
mysql_fetch_field_direct(); 给定字段编号,返回表字段的类型。
mysql_fetch_fields(); 返回所有字段结构的数组。
mysql_fetch_lengths(); 返回当前行中所有列的长度。
mysql_fetch_row(); 从结果集中获取下一行
mysql_field_seek(); 将列光标置于指定的列。
mysql_field_count(); 返回上次执行语句的结果列的数目。
mysql_field_tell(); 返回上次mysql_fetch_field()所使用字段光标的位置。
mysql_free_result(); 释放结果集使用的内存。
mysql_get_client_info(); 以字符串形式返回客户端版本信息。
mysql_get_client_version(); 以整数形式返回客户端版本信息。
mysql_get_host_info(); 返回描述连接的字符串。
mysql_get_server_version(); 以整数形式返回服务器的版本号。
mysql_get_proto_info(); 返回连接所使用的协议版本。
mysql_get_server_info(); 返回服务器的版本号。
mysql_info(); 返回关于最近所执行查询的信息。
mysql_init(); 获取或初始化MYSQL结构。
mysql_insert_id(); 返回上一个查询为AUTO_INCREMENT列生成的ID。
mysql_kill(); 杀死给定的线程。
mysql_library_end(); 最终确定MySQL C API库。
mysql_library_init(); 初始化MySQL C API库。
mysql_list_dbs(); 返回与简单正则表达式匹配的数据库名称。
mysql_list_fields(); 返回与简单正则表达式匹配的字段名称。
mysql_list_processes(); 返回当前服务器线程的列表。
mysql_list_tables(); 返回与简单正则表达式匹配的表名。
mysql_more_results(); 检查是否还存在其他结果。
mysql_next_result(); 在多语句执行过程中返回/初始化下一个结果。
mysql_num_fields(); 返回结果集中的列数。
mysql_num_rows(); 返回结果集中的行数。
mysql_options(); 为mysql_connect()设置连接选项。
mysql_ping(); 检查与服务器的连接是否工作,如有必要重新连接。
mysql_query(); 执行指定为“以Null终结的字符串”的SQL查询。
mysql_real_connect(); 连接到MySQL服务器。
mysql_real_escape_string();
考虑到连接的当前字符集,为了在SQL语句中使用,对字符串中的特殊字符进行转义处理。
mysql_real_query(); 执行指定为计数字符串的SQL查询。
mysql_refresh(); 刷新或复位表和高速缓冲。
mysql_reload(); 通知服务器再次加载授权表。
mysql_rollback(); 回滚事务。
mysql_row_seek(); 使用从mysql_row_tell()返回的值,查找结果集中的行偏移。
mysql_row_tell(); 返回行光标位置。
mysql_select_db(); 选择数据库。
mysql_server_end(); 最终确定嵌入式服务器库。
mysql_server_init(); 初始化嵌入式服务器库。
mysql_set_server_option(); 为连接设置选项(如多语句)。
mysql_sqlstate(); 返回关于上一个错误的SQLSTATE错误代码。
mysql_shutdown(); 关闭数据库服务器。
mysql_stat(); 以字符串形式返回服务器状态。
mysql_store_result(); 检索完整的结果集至客户端。
mysql_thread_id(); 返回当前线程ID。
mysql_thread_safe(); 如果客户端已编译为线程安全的,返回1。
mysql_use_result(); 初始化逐行的结果集检索。
mysql_warning_count(); 返回上一个SQL语句的告警数。
与MySQL交互时,应用程序应使用该一般性原则:
通过调用mysql_library_init(),初始化MySQL库。库可以是mysqlclientC客户端库,或mysqld嵌入式服务器库,具体情况取决于应用程序是否与“-libmysqlclient”或“-libmysqld”标志链接。
通过调用mysql_init()初始化连接处理程序,并通过调用mysql_real_connect()连接到服务器。
发出SQL语句并处理其结果。(在下面的讨论中,详细介绍了使用它的方法)。
通过调用mysql_close(),关闭与MySQL服务器的连接。
通过调用mysql_library_end(),结束MySQL库的使用。
介绍常用到的MYSQL相关的C变量类型。这些类型在我们后面定义变量的时候会用到
1、MYSQL
示例:
MYSQL mysql; #创建MYSQL实例
mysql_init(&mysql); #初始化开始进行连接
2、MYSQL_RES
这个结构代表返回行的一个查询的(SELECT, SHOW, DESCRIBE, EXPLAIN)的结果。返回的数据称为“数据集”。 从数据库读取数据,最后就是从MYSQL_RES中读取数据。
PS:类似于JAVA里面的ResultSet变量一样,将结果集存入到此变量中再从它里面去读数据。
3、MYSQL_ROW
这是一个行数据的类型安全(type-safe)的表示。当前它实现为一个计数字节的字符串数组。行通过调用mysql_fetch_row()获得
4、MYSQL_FIELD
你可以通过重复调用mysql_fetch_field()对每一列获得MYSQL_FIELD结构。这个结构包含字段信息,例如字段名、类型和大小。
PS:此变量定义的是列的相关属性问题!
示例一:实现遍历查询select* from table-name 操作
示例二:执行插入、更新、删除操作
这里归纳了C API可使用的函数,并在下一节详细介绍了它们。请参见25.2.3节,“C API函数描述”。
函数描述
mysql_affected_rows()
返回上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。
mysql_autocommit(); 切换 autocommit模式,ON/OFF
mysql_change_user(); 更改打开连接上的用户和数据库。
mysql_charset_name(); 返回用于连接的默认字符集的名称。
mysql_close(); 关闭服务器连接。
mysql_commit(); 提交事务。
mysql_connect(); 连接到MySQL服务器。该函数已不再被重视,使用mysql_real_connect()取代。
mysql_create_db(); 创建数据库。该函数已不再被重视,使用SQL语句CREATE DATABASE取而代之。
mysql_data_seek(); 在查询结果集中查找属性行编号。
mysql_debug(); 用给定的字符串执行DBUG_PUSH。
mysql_drop_db(); 撤销数据库。该函数已不再被重视,使用SQL语句DROP DATABASE取而代之。
mysql_dump_debug_info(); 让服务器将调试信息写入日志。
mysql_eof(); 确定是否读取了结果集的最后一行。该函数已不再被重视,可以使用mysql_errno()或mysql_error()取而代之。
mysql_errno(); 返回上次调用的MySQL函数的错误编号。
mysql_error(); 返回上次调用的MySQL函数的错误消息。
mysql_escape_string(); 为了用在SQL语句中,对特殊字符进行转义处理。
mysql_fetch_field(); 返回下一个表字段的类型。
mysql_fetch_field_direct(); 给定字段编号,返回表字段的类型。
mysql_fetch_fields(); 返回所有字段结构的数组。
mysql_fetch_lengths(); 返回当前行中所有列的长度。
mysql_fetch_row(); 从结果集中获取下一行
mysql_field_seek(); 将列光标置于指定的列。
mysql_field_count(); 返回上次执行语句的结果列的数目。
mysql_field_tell(); 返回上次mysql_fetch_field()所使用字段光标的位置。
mysql_free_result(); 释放结果集使用的内存。
mysql_get_client_info(); 以字符串形式返回客户端版本信息。
mysql_get_client_version(); 以整数形式返回客户端版本信息。
mysql_get_host_info(); 返回描述连接的字符串。
mysql_get_server_version(); 以整数形式返回服务器的版本号。
mysql_get_proto_info(); 返回连接所使用的协议版本。
mysql_get_server_info(); 返回服务器的版本号。
mysql_info(); 返回关于最近所执行查询的信息。
mysql_init(); 获取或初始化MYSQL结构。
mysql_insert_id(); 返回上一个查询为AUTO_INCREMENT列生成的ID。
mysql_kill(); 杀死给定的线程。
mysql_library_end(); 最终确定MySQL C API库。
mysql_library_init(); 初始化MySQL C API库。
mysql_list_dbs(); 返回与简单正则表达式匹配的数据库名称。
mysql_list_fields(); 返回与简单正则表达式匹配的字段名称。
mysql_list_processes(); 返回当前服务器线程的列表。
mysql_list_tables(); 返回与简单正则表达式匹配的表名。
mysql_more_results(); 检查是否还存在其他结果。
mysql_next_result(); 在多语句执行过程中返回/初始化下一个结果。
mysql_num_fields(); 返回结果集中的列数。
mysql_num_rows(); 返回结果集中的行数。
mysql_options(); 为mysql_connect()设置连接选项。
mysql_ping(); 检查与服务器的连接是否工作,如有必要重新连接。
mysql_query(); 执行指定为“以Null终结的字符串”的SQL查询。
mysql_real_connect(); 连接到MySQL服务器。
mysql_real_escape_string();
考虑到连接的当前字符集,为了在SQL语句中使用,对字符串中的特殊字符进行转义处理。
mysql_real_query(); 执行指定为计数字符串的SQL查询。
mysql_refresh(); 刷新或复位表和高速缓冲。
mysql_reload(); 通知服务器再次加载授权表。
mysql_rollback(); 回滚事务。
mysql_row_seek(); 使用从mysql_row_tell()返回的值,查找结果集中的行偏移。
mysql_row_tell(); 返回行光标位置。
mysql_select_db(); 选择数据库。
mysql_server_end(); 最终确定嵌入式服务器库。
mysql_server_init(); 初始化嵌入式服务器库。
mysql_set_server_option(); 为连接设置选项(如多语句)。
mysql_sqlstate(); 返回关于上一个错误的SQLSTATE错误代码。
mysql_shutdown(); 关闭数据库服务器。
mysql_stat(); 以字符串形式返回服务器状态。
mysql_store_result(); 检索完整的结果集至客户端。
mysql_thread_id(); 返回当前线程ID。
mysql_thread_safe(); 如果客户端已编译为线程安全的,返回1。
mysql_use_result(); 初始化逐行的结果集检索。
mysql_warning_count(); 返回上一个SQL语句的告警数。
与MySQL交互时,应用程序应使用该一般性原则:
通过调用mysql_library_init(),初始化MySQL库。库可以是mysqlclientC客户端库,或mysqld嵌入式服务器库,具体情况取决于应用程序是否与“-libmysqlclient”或“-libmysqld”标志链接。
通过调用mysql_init()初始化连接处理程序,并通过调用mysql_real_connect()连接到服务器。
发出SQL语句并处理其结果。(在下面的讨论中,详细介绍了使用它的方法)。
通过调用mysql_close(),关闭与MySQL服务器的连接。
通过调用mysql_library_end(),结束MySQL库的使用。
介绍常用到的MYSQL相关的C变量类型。这些类型在我们后面定义变量的时候会用到
1、MYSQL
要连接MYSQL,必须建立MYSQL实例,通过mysql_init初始化方能开始进行连接
示例:
MYSQL mysql; #创建MYSQL实例
mysql_init(&mysql); #初始化开始进行连接
2、MYSQL_RES
这个结构代表返回行的一个查询的(SELECT, SHOW, DESCRIBE, EXPLAIN)的结果。返回的数据称为“数据集”。 从数据库读取数据,最后就是从MYSQL_RES中读取数据。
PS:类似于JAVA里面的ResultSet变量一样,将结果集存入到此变量中再从它里面去读数据。
3、MYSQL_ROW
这是一个行数据的类型安全(type-safe)的表示。当前它实现为一个计数字节的字符串数组。行通过调用mysql_fetch_row()获得
4、MYSQL_FIELD
你可以通过重复调用mysql_fetch_field()对每一列获得MYSQL_FIELD结构。这个结构包含字段信息,例如字段名、类型和大小。
PS:此变量定义的是列的相关属性问题!
示例一:实现遍历查询select* from table-name 操作
#include <stdio.h> #include <mysql/mysql.h> int main() { MYSQL mysql; //mysql连接 MYSQL_RES *res; //这个结构代表返回行的一个查询结果集 MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示 char *query; //查询语句 int t,r; mysql_init(&mysql); if(!mysql_real_connect(&mysql,"localhost", "root","123", "test",3306,NULL,0)) a895 { printf( "Error connecting to database:%s",mysql_error(&mysql)); } else { printf("Connected..."); query="SET CHARACTER SET utf8"; /*设置编码*/ } t=mysql_real_query(&mysql,query,(unsigned int)strlen(query)); if(t) { printf("编码设置失败"); } query=" select * from a "; t=mysql_real_query(&mysql,query,(unsigned int)strlen(query)); if(t) { printf("执行查询时出现异常: %s",mysql_error(&mysql)); } else { printf("[%s] 构建成功",query); } res=mysql_store_result(&mysql); while(row=mysql_fetch_row(res)) { /* for(t=0;t) { printf("%s" "",row[t]); } */ printf("%s",row[1]); //表示查询的第几个字段的!也还可以遍历全部字段信息 printf("\n"); } mysql_free_result(res); mysql_close(&mysql); return 0; }
示例二:执行插入、更新、删除操作
#include <stdio.h> #include <mysql/mysql.h> int main() { MYSQL mysql; //mysql连接 MYSQL_RES *res; //这个结构代表返回行的一个查询结果集 MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示 char *query; //数据库语句 int t,r; mysql_init(&mysql); if(!mysql_real_connect(&mysql,"localhost", "root","123", "test",3306,NULL,0)) { printf( "Error connecting to database:%s",mysql_error(&mysql)); } else { printf("Connected..."); } query="SET CHARACTER SET utf8"; //设置编码 t=mysql_real_query(&mysql,query,(unsigned int)strlen(query)); if(t) { printf("编码设置失败"); } query="insert into a(name,age)values('w',9)"; t=mysql_real_query(&mysql,query,(unsigned int)strlen(query)); if(t) { printf("执行查询时出现异常: %s",mysql_error(&mysql)); } else { printf("[%s] 构建成功",query); } mysql_close(&mysql); return 0; }
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- Android Manifest 用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Spark RDD API详解(一) Map和Reduce
- 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)