MySQL C API函数概述--基于版本5.7

内容源连接:https://dev.mysql.com/doc/refman/5.7/en/c-api-function-overview.html

my_init():在线程安全程序中初始化全局变量和线程处理程序。

mysql_affected_rows():返回的行数改变/删除/插入的最后 UPDATEDELETEINSERT查询。

mysql_autocommit():打开/关闭自动提交模式。

mysql_change_user():在打开的连接上更改用户和数据库。

mysql_character_set_name():返回当前连接的默认字符集名称。

mysql_client_find_plugin():返回指向插件的指针。

mysql_client_register_plugin():注册一个插件。

mysql_close():关闭服务器连接。

mysql_commit():提交事务。

mysql_connect():连接到MySQL服务器。不推荐使用此功能;使用 mysql_real_connect()代替。

mysql_create_db():创建一个数据库。不推荐使用此功能;请改用SQL语句 CREATE DATABASE。

mysql_data_seek():在查询结果集中寻找任意行号。

mysql_debug(): DBUG_PUSH对给定的字符串执行a。

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_count():返回最新语句的结果列数。

mysql_field_seek():将列光标放在指定的列上。

mysql_field_tell():返回用于最后一个的字段光标的位置 mysql_fetch_field()。

mysql_free_result():释放结果集使用的内存。

mysql_get_character_set_info():返回有关默认字符集的信息。

mysql_get_client_info():以字符串形式返回客户端版本信息。

mysql_get_client_version():以整数形式返回客户端版本信息。

mysql_get_host_info():返回描述连接的字符串。

mysql_get_option():返回mysql_options() 选项的值。

mysql_get_proto_info():返回连接使用的协议版本。

mysql_get_server_info():返回服务器版本号。

mysql_get_server_version():以整数形式返回服务器版本号。

mysql_get_ssl_cipher():返回当前的SSL密码。

mysql_hex_string():以十六进制格式编码字符串。

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_load_plugin():加载插件。

mysql_load_plugin_v():加载插件。

mysql_more_results():检查是否还存在其他结果。

mysql_next_result():返回/启动多结果执行中的下一个结果。

mysql_num_fields():返回结果集中的列数。

mysql_num_rows():返回结果集中的行数。

mysql_options():设置的连接选项 mysql_real_connect()

mysql_options4():设置的连接选项 mysql_real_connect()。

mysql_ping():检查与服务器的连接是否正常,并根据需要重新连接。

mysql_plugin_options():设置插件选项。

mysql_query():执行指定为以空值终止的字符串的SQL查询。

mysql_real_connect():连接到MySQL服务器。

mysql_real_escape_string():考虑到连接的当前字符集,转义字符串中的特殊字符以用于SQL语句。

mysql_real_escape_string_quote():考虑到连接的当前字符集和引用上下文,转义字符串中的特殊字符以用于SQL语句。

mysql_real_query():执行指定为计数字符串的SQL查询。

mysql_refresh():刷新或重置表和缓存。

mysql_reload():告诉服务器重新加载授权表。

mysql_reset_connection():将连接重置为清除会话状态。

mysql_rollback():回滚事务。

mysql_row_seek():使用从返回的值在结果集中寻找行偏移量 mysql_row_tell()。

mysql_row_tell():返回行光标的位置。

mysql_select_db():选择一个数据库。

mysql_server_end():完成MySQL C API库。

mysql_server_init():初始化MySQL C API库。

mysql_session_track_get_first():获取会话状态更改信息的第一部分。

mysql_session_track_get_next():获取会话状态更改信息的下一部分。

mysql_set_character_set():设置当前连接的默认字符集。

mysql_set_local_infile_default():将LOAD DATA LOCAL处理程序回调设置为其默认值。

mysql_set_local_infile_handler():安装特定于应用程序的 LOAD DATA LOCAL处理程序回调。

mysql_set_server_option():设置连接选项(如 multi-statements)。

mysql_sqlstate():返回最后一个错误的SQLSTATE错误代码。

mysql_shutdown():关闭数据库服务器。

mysql_ssl_set():准备与服务器建立SSL连接。

mysql_stat():以字符串形式返回服务器状态。

mysql_store_result():检索完整的结果集给客户端。

mysql_thread_end():完成线程处理程序。

mysql_thread_id():返回当前线程ID。

mysql_thread_init():初始化线程处理程序。

mysql_thread_safe():如果客户端被编译为线程安全的,则返回1。

mysql_use_result():启动逐行结果集检索。

mysql_warning_count():返回上一条SQL语句的警告计数。

应用程序应使用以下概述与MySQL进行交互:

   通过调用 mysql_library_init()初始化MySQL客户端库。此功能在libmysqlclient C客户端库和libmysqld嵌入式服务器库中都存在,因此无论您是通过与该-libmysqlclient标志链接来构建常规客户端程序,还是通过与该标志链接来构建 嵌入式服务器应用程序,都可以使用该功能-libmysqld 。

   通过调用mysql_init()初始化连接处理程序,并通过调用mysql_real_connect()连接到服务器 。

发出SQL语句并处理其结果。(以下讨论提供了有关如何执行此操作的更多信息。)

   通过调用 mysql_close()关闭与MySQL服务器的连接。

   通过调用 mysql_library_end()结束使用MySQL客户端库。

   调用mysql_library_init()和mysql_library_end() 的目的是提供MySQL客户端库的正确初始化和完成。对于与客户端库链接的应用程序,它们提供了改进的内存管理。如果不调用mysql_library_end(),则会 保留一块内存。(这不会增加应用程序使用的内存量,但是某些内存泄漏检测器会抱怨它。)对于与嵌入式服务器链接的应用程序,这些调用会启动和停止服务器。

   在非多线程环境中,调用mysql_library_init()可以省略 ,因为mysql_init()它将在必要时自动调用它。但是,mysql_library_init()在多线程环境中不是线程安全的,因此mysql_init()和mysql_library_init()都不是。无论是通过mysql_library_init() 调用还是间接通过 mysql_init()调用,都必须在生成任何线程之前进行调用,或者使用互斥体来保护该调用。这应该在任何其他客户端库调用之前完成。

   要连接到服务器,请调用 mysql_init()初始化连接处理程序,然后使用该处理程序进行调用mysql_real_connect()(以及其他信息,例如主机名,用户名和密码)。连接后,在低于5.0.3的API 版本或 更高版本中, mysql_real_connect()将reconnect标志(MYSQL结构的一部分 )设置为1。此标志的值表示如果由于连接丢失而无法执行语句,请在放弃之前尝试重新连接到服务器。您可以使用mysql_options()来控制重新连接行为。连接完成后,可以调用mysql_close()终止它。关闭处理程序后,请勿使用它。

   连接处于活动状态时,客户端可以使用mysql_query()mysql_real_query()将SQL语句发送到服务器。两者之间的区别在于,mysql_query()期望查询指定为以空值结尾的字符串,而 mysql_real_query()期望使用计数的字符串。如果字符串包含二进制数据(可能包含空字节),则必须使用 mysql_real_query()。

   对于每个非SELECT查询(例如INSERTUPDATEDELETE),你能通过调用mysql_affected_rows()找出多少行被改变(受影响) 。

   对于SELECT查询,您将选择的行作为结果集进行检索。(请注意,某些语句和SELECT一样,他们返回行。这些措施包括SHOW, DESCRIBE,和 EXPLAIN。对待这些声明的方式和SELECT的语句相同。)

   客户有两种方式处理结果集。一种方法是 mysql_store_result(),通过调用一次检索全部结果集。此函数从服务器获取查询返回的所有行,并将其存储在客户端中。第二种方法是 mysql_use_result(),让客户端通过调用启动逐行结果集检索。此函数将初始化检索,但实际上不会从服务器获取任何行。

   在这两种情况下,您都可以通过调用mysql_fetch_row()来访问行。使用 mysql_store_result(), mysql_fetch_row()可以访问先前从服务器获取的行。使用 mysql_use_result(), mysql_fetch_row()实际上是从服务器检索行。可通过调用 mysql_fetch_lengths()获得有关每一行中数据大小的信息。

   完成结果集后,调用 mysql_free_result()以释放用于其的内存。

   两种检索机制是互补的。每个客户端应用程序选择最适合的方法。实际上,客户更普遍地倾向于使用mysql_store_result() 。

   使用 mysql_store_result()的一个优点是因为把所有行都已提取到客户端,所以您不仅可以顺序访问行,还可以使用mysql_data_seek() 或mysql_row_seek()更改结果集中当前行的位置在结果集中来回移动。您还可以通过调用mysql_num_rows()找出多少行。另一方面,mysql_store_result()对于大型结果集,其内存要求可能很高,并且您更有可能遇到内存不足的情况。

   使用mysql_use_result() 的一个优点是,客户端需要较少的内存来存储结果集,因为它一次只能维护一行(而且分配开销较小, mysql_use_result()因此可以更快)。缺点是您必须快速处理每一行以避免阻塞服务器,您不能随机访问结果集中的行(只能顺序访问行),并且直到您知道结果集中的行数为止全部都找回了。此外, 即使在检索中确定您已找到所需的信息,也必须检索所有行。

   该API使客户端能够对语句做出适当的响应(仅在必要时检索行),而无需知道该语句是否是SELECT语句。您可以通过mysql_store_result()在每个mysql_query()(或 mysql_real_query())之后 调用来实现此目的 。如果结果集调用成功,则该语句为 SELECT,您可以读取行。如果结果集调用失败,请调用 mysql_field_count()以确定结果是否确实在预期中。如果 mysql_field_count()返回零,声明没有返回数据(表明它是一个 INSERTUPDATEDELETE,等等),并没有返回行。如果 mysql_field_count()为非零,该语句应返回行,但没有返回。这表明该语句是 SELECT失败的。有关mysql_field_count()如何执行此操作的示例,请参见说明 。

   mysql_store_result()mysql_use_result()让你获得有关组成结果集(领域,他们的名字和类型的数量,等等)的字段的信息。您可以通过重复调用mysql_fetch_field()在行中顺序访问字段信息,通过调用mysql_fetch_field_direct()在行中的字段编号。可以通过调用mysql_field_seek()更改当前字段光标的位置。调用mysql_fetch_field()设置字段光标会影响对的后续。您还可以通过调用mysql_fetch_fields()一次获得所有字段的信息 。

   为了检测和报告错误,MySQL通过mysql_errno()和 mysql_error()函数提供对错误信息的访问 。它们返回用于成功或失败的最近调用函数的错误代码或错误消息,使您能够确定何时发生错误以及错误的内容。

备注:搬运不易,如有缺漏,请指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值