MySQL入门之常用C语言API
来源:互联网 发布:麻林涛知乎 编辑:程序博客网 时间:2024/05/18 02:24
转自:http://blog.csdn.net/qq920020796/article/details/49250369
数据类型
- MYSQL
- 该结构代表1个数据库连接的句柄。几乎所有的MYSQL函数均使用它。
- MYSQL_RES
- 该结构代表返回行的查询结果
- MYSQL_ROW
- 这是1行数据的"类型安全"表示。
- MYSQL_FIELD
- 该结构包 含关 于字段的信息,如字段名、类型和大小等
- MYSQL_FIELD_OFFSET
- 这时MYSQL字段列表偏移量的"类型安全"表示
- my_ulonglong
- 用于行数以及mysql_affected_rows()、mysql_num_rows()和mysql_insert_id()的类型
编程步骤
- 1 通过调用mysql_library_init(),初始化MYSQL库
- 2 通过调用mysql_init()初始化连接处理程序,并通过调用mysql_real_connect()连接到服务器
- 3 发出SQL语句并处理其结果
- 4 通过调用mysql_close(),关闭与MYSQL服务器的连接
- 5 通过调用mysql_library_end(),结束MYSQL库的使用
数据库连接
- 初始化一个连接句柄结构
#include <MySQL.h>
MYSQL *mysql_init(MYSQL *);
- 和数据库建立物理连接
MYSQL *mysql_real_connect(MYSQL *connection,
const char *server_host,const char *sql_user_name,
const char *sql_password,const char *db_name,
unsigned int port_number,const char
*unix_socket_name,unsigned int flags);
连接参数
Int mysql_options(MYSQL *connection,enum
option_to_set,const char *argument)
错误处理
- unsigned int mysql_errno(MYSQL *connection);
对于由mysql指定的连接,该函数返回最近调用的API函数的错误代码,该函数调用可能成功也可能失败。"0"返回值表示未出现错误
- char *mysql_error(MYSQL *connection)
如果想获得错误的文本信息,可以调用该函数
执行SQL语句
- int mysql_query(MYSQL *mysql,const char *query)
- 功能描述:
- 执行由"Null终结的字符串"查询指向的SQL查询。正常情况下,字符串必须包含1条SQL语句,而且不应为语句添加终结分号或"\g"
- 不能用于包含二进制数据的查询,应使用mysql_real_query来完成
对于操纵语句
- My_ulonglong mysql_affected_rows(MYSQL *mysql)
返回上次操纵语句所涉及到记录的行数
- 对于UPDATE、DELETE或INSERT语句,可在mysql_query()后立刻调用。对于SELECT语句,该函数的工作方式与mysql_num_rows()类似
对于查询语言
- MYSQL_RES *mysql_store_result(MYSQL *mysql)
- 功能说明:
- 对于成功检索了数据的每个查询,必须调用mysql_store_result()或mysql_use_result()
- 该函数将查询的全部结果读取到客户端,分配1个MYSQL_RES结构,并将结果置于该结构中
- 可以通过mysql_num_rows来找出结果集中的行数
事务处理
- my_bool mysql_autocommit(MYSQL *mysql,my_bool mode)
- 函数说明:如果模式为1,启动autocommit模式;如果模式为0,禁止autocommit模式
- my_bool mysql_commit(MYSQL *mysql)
- 提交当前事务
- my_bool mysql_rollback(MYSQL *mysql)
- 回滚当前事务
处理结果集
- MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
- 功能描述
- 检索结果集的下一行
- 行内值的数目由mysql_num_fields(result)给出
- 可以调用mysql_fetch_lengths()来获得行中字段值的长度
- void mysql_data_seek(MYSQL_RES *result,my_ulonglong offset)
- 功能描述:
- 在查询结果集中寻找任意行。偏移值为行号。
- 该函数要求结果集结构包含查询的所有结果
- MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result)
- 返回光标的当前位置
- MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result,MYSQL_ROW_OFFSET offset)
- 将行光标置于查询结果集中的任意行
每次接收一行数据
- MYSQL_RES *mysql_use_result(MYSQL *mysql)
- 功能说明:
- 不像mysql_store_result()那样把结果集实际读取到客户端。它必须通过对mysql_fetch_row()的调用,对每一行分别进行检索。
- Mysql_store_result()相比,速度更快而且使用的内存更少
多查询执行的C API处理
- 支持在单个字符串中指定的多语句的执行。要想与给定的连接一起使用该功能,打开连接时,必须将标志参数中的CLIENT_MULTI_STATEMENTS选项指定给mysql_real_connect()。也可以通过调用mysql_set_server_option(MYSQL_OPTION_MULTI_STATEMENTS_ON),为已有的连接设置它
详细api列表
MYSQL *mysql_init(MYSQL *mysql)
- 分配或初始化与mysql_real_connect()相适应的MYSQL对象。
- 如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。
- 如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。
void mysql_close(MYSQL *mysql)
- 关闭前面打开的连接。
- 如果句柄是由mysql_init()或mysql_connect()自动分配的,mysql_close()还将解除分配由mysql指向的连接句柄。
mysql_real_connect函数
- MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
- 函数功能:尝试与运行在主机上的MySQL数据库引擎建立连接
- connect = mysql_real_connect(&mysql, "localhost", "root", "123456", "mydb2", 0, NULL, 0 );
查询api
mysql_query()函数和mysql_real_query()函数
- int mysql_query(MYSQL *mysql, const char *query)
- int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)
- 对于包含二进制数据的查询,必须使用mysql_real_query()而不是mysql_query(),
- mysql_real_query()比mysql_query()快,这是因为它不会在查询字符串上调用strlen()。
获取结果集api
mysql_store_result()函数和mysql_use_result
- MYSQL_RES *mysql_store_result(MYSQL *mysql)
- mysql_store_result()将查询的全部结果读取到客户端,分配1个MYSQL_RES结构,并将结果置于该结构中;
- 可调用mysql_num_rows()来找出结果集中的行数。可以调用mysql_fetch_row()来获取结果集中的行,或调用mysql_row_seek()和mysql_row_tell()来获取或设置结果集中的当前行位置。
- 一旦完成了对结果集的操作,必须调用mysql_free_result()。
MYSQL_RES *mysql_use_result(MYSQL *mysql) 每次接收一行数据
- 功能说明:
- 不像mysql_store_result()那样把结果集实际读取到客户端。它必须通过对mysql_fetch_row()的调用,对每一行分别进行检索。
- Mysql_store_result()相比,速度更快而且使用的内存更少
UPDATE
, DELETE
或INSERT
查询影响的行数。mysql_close()关闭一个服务器连接。mysql_connect()连接一个MySQL服务器。该函数不推荐;使用mysql_real_connect()
代替。mysql_change_user()改变在一个打开的连接上的用户和数据库。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_host_info()返回一个描述连接的字符串。mysql_get_proto_info()返回连接使用的协议版本。mysql_get_server_info()返回服务器版本号。mysql_info()返回关于最近执行得查询的信息。mysql_init()获得或初始化一个MYSQL
结构。mysql_insert_id()返回有前一个查询为一个AUTO_INCREMENT
列生成的ID。mysql_kill()杀死一个给定的线程。mysql_list_dbs()返回匹配一个简单的正则表达式的数据库名。mysql_list_fields()返回匹配一个简单的正则表达式的列名。mysql_list_processes()返回当前服务器线程的一张表。mysql_list_tables()返回匹配一个简单的正则表达式的表名。mysql_num_fields()返回一个结果集合重的列的数量。mysql_num_rows()返回一个结果集合中的行的数量。mysql_options()设置对mysql_connect()
的连接选项。mysql_ping()检查对服务器的连接是否正在工作,必要时重新连接。mysql_query()执行指定为一个空结尾的字符串的SQL查询。mysql_real_connect()连接一个MySQL服务器。mysql_real_query()执行指定为带计数的字符串的SQL查询。mysql_reload()告诉服务器重装授权表。mysql_row_seek()搜索在结果集合中的行,使用从mysql_row_tell()
返回的值。mysql_row_tell()返回行光标位置。mysql_select_db()连接一个数据库。mysql_shutdown()关掉数据库服务器。mysql_stat()返回作为字符串的服务器状态。mysql_store_result()检索一个完整的结果集合给客户。mysql_thread_id()返回当前线程的ID。mysql_use_result()初始化一个一行一行地结果集合的检索。mysql_affected_rows()返回被最新的UPDATE
, DELETE
或INSERT
查询影响的行数。mysql_close()关闭一个服务器连接。mysql_connect()连接一个MySQL服务器。该函数不推荐;使用mysql_real_connect()
代替。mysql_change_user()改变在一个打开的连接上的用户和数据库。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_host_info()返回一个描述连接的字符串。mysql_get_proto_info()返回连接使用的协议版本。mysql_get_server_info()返回服务器版本号。mysql_info()返回关于最近执行得查询的信息。mysql_init()获得或初始化一个MYSQL
结构。mysql_insert_id()返回有前一个查询为一个AUTO_INCREMENT
列生成的ID。mysql_kill()杀死一个给定的线程。mysql_list_dbs()返回匹配一个简单的正则表达式的数据库名。mysql_list_fields()返回匹配一个简单的正则表达式的列名。mysql_list_processes()返回当前服务器线程的一张表。mysql_list_tables()返回匹配一个简单的正则表达式的表名。mysql_num_fields()返回一个结果集合重的列的数量。mysql_num_rows()返回一个结果集合中的行的数量。mysql_options()设置对mysql_connect()
的连接选项。mysql_ping()检查对服务器的连接是否正在工作,必要时重新连接。mysql_query()执行指定为一个空结尾的字符串的SQL查询。mysql_real_connect()连接一个MySQL服务器。mysql_real_query()执行指定为带计数的字符串的SQL查询。mysql_reload()告诉服务器重装授权表。mysql_row_seek()搜索在结果集合中的行,使用从mysql_row_tell()
返回的值。mysql_row_tell()返回行光标位置。mysql_select_db()连接一个数据库。mysql_shutdown()关掉数据库服务器。mysql_stat()返回作为字符串的服务器状态。mysql_store_result()检索一个完整的结果集合给客户。mysql_thread_id()返回当前线程的ID。mysql_use_result()初始化一个一行一行地结果集合的检索。- MySQL入门之常用C语言API
- MySQL入门之常用C语言API
- MYSQL 语言C API的常用函数
- MySQL入门之C语言操作MySQL
- MySQL之常用C API详述
- MySQL之常用C API详述
- MySQL之常用C API详述
- MySQL连接之C语言API
- C语言 常用API
- C 语言 MYSQL API
- MySQL C语言API
- 【MySQL】 MySQL学习之 --- C语言API总览
- SQLite3 C语言API入门
- SQLite3 C语言API入门
- SQLite3 C语言API入门
- SQLite3 C语言API入门
- SQLite3 C语言API入门
- SQLite3 C语言API入门
- sg函数模板
- 异常 org.hibernate.MappingException: Unknown entity: entity.XXXX
- css3布局
- 发现与研究的基石
- BlockingQueue实现生产者消费者模式
- MySQL入门之常用C语言API
- 两个fragment切换时,自动滑动的冲突.
- vm虚拟机安装及Oracle安装
- Java虚拟机-JVM各种参数配置大全详细
- PyCharm设置模板添加默认信息
- Android集成网易云信(关于聊天与聊天界面)
- android popupWindow 在android 7.0上显示缺陷
- Android性能优化典范
- 时间控件二--timepicker