Mysql官方接口中文解释

主要是对官方接口说明进行翻译(机翻),其实看英文的说明也差不多。

本人做了一定的区分以及整合,主要还是为了方面查找和阅读。顺序和官网中的接口说明顺序可能不大一样,顺序是和源库中的接口顺序相同。(另外官方代码下面还有一些额外功能接口没有列举出来)

官方接口说明:MySQL :: MySQL 8.0 C API Developer Guide

目录

一、初始化

1、mysql_server_init

2、mysql_server_end

3、mysql_thread_init

4、mysql_thread_end

二、工具函数

5、mysql_num_rows

6、mysql_num_fields

7、mysql_eof

8、mysql_fetch_field_direct

9、mysql_fetch_fields

10、mysql_row_tell

11、mysql_field_tell

12、mysql_result_metadata

13、mysql_field_count

14、mysql_affected_rows

15、mysql_insert_id

16、mysql_errno

17、mysql_error

18、mysql_sqlstate

19、mysql_warning_count

20、mysql_info

21、mysql_thread_id

22、mysql_character_set_name

23、mysql_set_character_set

24、mysql_init

25、mysql_ssl_set

26、mysql_get_ssl_cipher

27、mysql_change_user

28、mysql_real_connect

29、mysql_select_db

30、mysql_query

31、mysql_send_query

32、mysql_real_query

33、mysql_store_result

34、mysql_use_result

35、mysql_real_connect_nonblocking

36、mysql_send_query_nonblocking

37、mysql_real_query_nonblocking

38、mysql_store_result_nonblocking

39、mysql_next_result_nonblocking

40、mysql_select_db_nonblocking

41、mysql_get_character_set_info

42、mysql_session_track_get_first

43、mysql_session_track_get_next

三、支持本地infile接口函数

44、mysql_set_local_infile_handler

45、mysql_set_local_infile_default

46、mysql_shutdown

47、mysql_dump_debug_info

48、mysql_refresh

49、mysql_kill

50、mysql_set_server_option

51、mysql_ping

52、mysql_stat

53、mysql_get_server_info

54、mysql_get_client_info

55、mysql_get_client_version

56、mysql_get_host_info

57、mysql_get_server_version

58、mysql_get_proto_info

59、mysql_list_dbs

60、mysql_list_tables

61、mysql_list_processes

62、mysql_options

63、mysql_options4

64、mysql_get_option

65、mysql_free_result

66、mysql_free_result_nonblocking

67、mysql_data_seek

68、mysql_row_seek

69、mysql_field_seek

70、mysql_fetch_row

71、mysql_fetch_row_nonblocking

72、mysql_fetch_lengths

73、mysql_fetch_field

74、mysql_list_fields

75、mysql_escape_string

76、mysql_hex_string

77、mysql_real_escape_string

78、mysql_real_escape_string_quote

79、mysql_debug

80、myodbc_remove_escape

81、mysql_thread_safe

82、mysql_read_query_result

83、mysql_reset_connection

84、mysql_binlog_open

85、mysql_binlog_fetch

86、mysql_binlog_close


一、初始化

       设置和关闭服务器;为了确保应用程序在针对标准客户端库或嵌入式服务器库进行链接时能够正常工作,应该调用这些函数。

       Mysql_server_init /end需要在使用libmysqld或libmysqlclient时调用(确切地说,Mysql_server_init()是由mysql_init()调用的,所以你不需要显式调用它;但是您需要调用mysql_server_end()来释放内存)。名称有一点误导(使用libmysqlCLIENT时使用mysql_SERVER*)。所以我们添加了更通用的名称,无论你是使用libmysqld还是libmysqlclient。我们打算通过mysql_server*来提升这些别名。

1、mysql_server_init

        int STDCALL mysql_server_init(int argc, char **argv, char **groups);

       这个函数初始化MySQL客户端库,这必须在调用任何其他MySQL函数之前完成。但是,mysql_server_init()已经被弃用了,你应该调用mysql_library_init()来代替。参见第5.4.42节“mysql_library_init()”


2、mysql_server_end

        void STDCALL mysql_server_end(void);

       这个函数最终确定了MySQL客户端库,这应该在您使用完库之后完成。但是,mysql_server_end()已经弃用,应该使用mysql_library_end()。参见第5.4.41节,“mysql_library_end()”。

#define mysql_library_init mysql_server_init
#define mysql_library_end mysql_server_end

3、mysql_thread_init

        bool STDCALL mysql_thread_init(void);


4、mysql_thread_end

        void STDCALL mysql_thread_end(void);

       设置和放下一个线程;这些函数应该在应用程序中打开至少一个MySQL连接的每个线程中调用。所有连接的使用都应该在这些函数调用之间。

二、工具函数

      如果使用共享库,那么从MYSQL和MYSQL_RES结构中获取信息的函数一定要使用。

5、mysql_num_rows

        uint64_t STDCALL mysql_num_rows(MYSQL_RES *res);

       mysql_num_rows()的使用取决于您是使用mysql_store_result()还是使用mysql_use_result()来返回结果集。如果使用mysql_store_result(),可能会立即调用mysql_num_rows()。如果你使用mysql_use_result(), mysql_num_rows()不会返回正确的值,直到所有的行在结果集中已经被检索。

       mysql_num_rows()用于返回结果集的语句,例如SELECT。对于INSERT、UPDATE或DELETE等语句,受影响的行数可以通过mysql_affected_rows()获取。


6、mysql_num_fields

        unsigned int STDCALL mysql_num_fields(MYSQL_RES *res);

       可以从指向结果集的指针或连接处理程序的指针获取列数。如果mysql_store_result()或mysql_use_result()返回NULL(因此没有结果集指针),您将使用连接处理程序。在这种情况下,您可以调用mysql_field_count()来确定mysql_store_result()是否应该产生一个非空的结果。这使得客户机程序可以在不知道查询是否是SELECT(或类似SELECT)语句的情况下采取适当的操作。这里展示的示例说明了如何做到这一点。


7、mysql_eof

        bool STDCALL mysql_eof(MYSQL_RES *res);

       此函数不建议使用。可以使用Mysql_errno()或mysql_error()。

       Mysql_eof()确定是否读取了结果集的最后一行。

       如果从成功调用mysql_store_result()中获取结果集,客户端将在一次操作中接收到整个结果集。在这种情况下,从mysql_fetch_row()返回NULL总是意味着已经到达了结果集的末尾,没有必要调用mysql_eof()。当与mysql_store_result()一起使用时,mysql_eof()总是返回true。

       另一方面,如果您使用mysql_use_result()来初始化结果集检索,那么当您重复调用mysql_fetch_row()时,将从服务器逐一获取结果集的行。由于在此过程中连接可能会发生错误,因此mysql_fetch_row()的返回值为NULL并不一定意味着正常地到达了结果集的结束。在这种情况下,您可以使用mysql_eof()来确定发生了什么。Mysql_eof()如果到达结果集的末尾,则返回一个非零值;如果发生错误,则返回零。

       在历史上,mysql_eof()早于标准的MySQL错误函数mysql_errno()和mysql_error()。因为这些错误函数提供相同的信息,所以它们比mysql_eof()更受欢迎,后者已被弃用。(实际上,它们提供了更多的信息,因为mysql_eof()只返回一个布尔值,而错误函数在错误发生时指出错误的原因。)


8、mysql_fetch_field_direct

        MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res,
                                              unsigned int fieldnr);

       给定结果集中某列的字段编号fieldnr,将该列的字段定义作为MYSQL_FIELD结构返回。使用此函数检索任意列的定义。为fieldnr指定一个从0到mysql_num_fields(result)-1的值。

       对于元数据可选连接,当系统变量resultset_metadata设置为NONE时,该函数返回NULL。要检查结果集是否有元数据,使用mysql_result_metadata()函数。关于管理结果集元数据传输的详细信息,请参见3.6.6“可选结果集元数据”。


9、mysql_fetch_fields

        MYSQL_FIELD *STDCALL mysql_fetch_fields(MYSQL_RES *res);

       返回结果集的所有MYSQL_FIELD结构的数组。每个结构都为结果集的一列提供字段定义。

       对于元数据可选连接,当系统变量resultset_metadata设置为NONE时,该函数返回NULL。要检查结果集是否有元数据,使用mysql_result_metadata()函数。关于管理结果集元数据传输的详细信息,请参见3.6.6“可选结果集元数据”。


10、mysql_row_tell

        MYSQL_ROW_OFFSET STDCALL mysql_row_tell(MYSQL_RES *res);

       返回最后一个mysql_fetch_row()的行游标的当前位置。这个值可以作为mysql_row_seek()的参数。

       mysql_row_tell()只能在mysql_store_result()后面使用,不能在mysql_use_result()后面使用。


11、mysql_field_tell

        MYSQL_FIELD_OFFSET STDCALL mysql_field_tell(MYSQL_RES *res);

       返回用于最后一个mysql_fetch_field()的字段游标的位置。这个值可以作为mysql_field_seek()的参数。


12、mysql_result_metadata

        enum enum_resultset_metadata STDCALL mysql_result_metadata(MYSQL_RES *result);

       Mysql_result_metadata()返回一个值,该值指示结果集是否有元数据。当客户机事先不知道特定的结果集是否具有元数据时,它对于元数据可选连接非常有用。例如,如果客户端执行一个返回多个结果集并可能更改resultset_metadata系统变量的存储过程,那么客户端可以为每个结果集调用mysql_result_metadata()来确定它是否有元数据。

       关于管理结果集元数据传输的详细信息,请参见3.6.6“可选结果集元数据”。

13、mysql_field_count

        unsigned int STDCALL mysql_field_count(MYSQL *mysql);

       返回有关连接的最新查询的列数。

这个函数通常在mysql_store_result()返回NULL时使用(因此没有结果集指针)。在这种情况下,您可以调用mysql_field_count()来确定mysql_store_result()是否应该产生一个非空的结果。这使得客户机程序可以在不知道查询是否是SELECT(或类似SELECT)语句的情况下采取适当的操作。这里展示的示例说明了如何做到这一点。

       请参见3.6.8," NULL mysql_store_result() Return After mysql_query() Success "。


14、mysql_affected_rows

        uint64_t STDCALL mysql_affected_rows(MYSQL *mysql);

       Mysql_affected_rows()可以在使用mysql_real_query()或mysql_query()执行语句后立即调用。如果是UPDATE、DELETE或INSERT语句,则返回最后一条语句更改、删除或插入的行数。对于SELECT语句,mysql_affected_rows()的工作方式类似于mysql_num_rows()。

       对于UPDATE语句,默认情况下,受影响的行数是实际更改的行数。如果你指定了CLIENT_FOUND_ROWS标志mysql_real_connect()连接到mysqld时,受影响的行值是“发现”的行数;也就是说,由WHERE子句匹配。

       对于REPLACE语句,如果新行替换了旧行,则受影响的rows值为2,因为在这种情况下,在删除重复行之后插入了一行。

       对于插入……在DUPLICATE KEY UPDATE语句中,如果将行作为新行插入,则每行受影响的rows值为1,如果更新现有行,则为2,如果将现有行设置为其当前值,则为0。如果指定CLIENT_FOUND_ROWS标志,如果将现有行设置为其当前值,则受影响的rows值为1(而不是0)。

       在存储过程的CALL语句之后,mysql_affected_rows()返回在该过程中执行的最后一条语句将返回的值,如果该语句返回-1,则返回0。在这个过程中,可以在SQL级别使用ROW_COUNT()来获取单个语句的受影响行值。


15、mysql_insert_id

        uint64_t STDCALL mysql_insert_id(MYSQL *mysql);

       返回由前面的INSERT或UPDATE语句为AUTO_INCREMENT列生成的值。在对包含AUTO_INCREMENT字段的表执行INSERT语句,或使用INSERT或UPDATE使用LAST_INSERT_ID(expr)设置列值之后,请使用此函数。

       mysql_insert_id()的返回值总是零,除非显式地在下列情况下更新(这部分详情需要直接看官方的详细说明)


16、mysql_errno

        unsigned int STDCALL mysql_errno(MYSQL *mysql);

       对于mysql指定的连接,mysql_errno()返回最近调用的可能成功或失败的API函数的错误代码。返回值为0表示没有发生错误。客户端错误消息编号列在MySQL的errmsg.h头文件中。服务器错误消息编号列在mysqld_error.h中。错误也列在错误消息和常见问题。


17、mysql_error

        const char *STDCALL mysql_error(MYSQL *mysql);

        对于mysql指定的连接,mysql_error()返回一个以空结束的字符串,其中包含最近调用失败的API函数的错误消息。如果函数没有失败,mysql_error()的返回值可能是前面的错误或一个空字符串表示没有错误。​​​​​​


18、mysql_sqlstate

        const char *STDCALL mysql_sqlstate(MYSQL *mysql);

       返回一个以空结束的字符串,其中包含最近执行的SQL语句的SQLSTATE错误代码。错误码为5个字符。“00000”表示“没有错误”。这些值由ANSI SQL和ODBC指定。有关可能值的列表,请参见错误消息和常见问题。


19、mysql_warning_count

        unsigned int STDCALL mysql_warning_count(MYSQL *mysql);

       返回执行前一个SQL语句期间生成的错误、警告和注意的数量。


20、mysql_info

        const char *STDCALL mysql_info(MYSQL *mysql);

       检索提供关于最近执行的语句的信息的字符串,但仅适用于这里列出的语句。对于其他语句,mysql_info()返回NULL。字符串的格式取决于语句的类型,如本文所述。这些数字仅供说明;该字符串包含适合该语句的值。

  • INSERT INTO ... SELECT ...

    String format: Records: 100 Duplicates: 0 Warnings: 0

  • INSERT INTO ... VALUES (...),(...),(...)...

    String format: Records: 3 Duplicates: 0 Warnings: 0

  • LOAD DATA

    String format: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

  • ALTER TABLE

    String format: Records: 3 Duplicates: 0 Warnings: 0

  • UPDATE

    String format: Rows matched: 40 Changed: 40 Warnings: 0

       mysql_info()返回一个非null值的INSERT…值仅用于语句的多行形式(即,仅在指定多个值列表时)。


21、mysql_thread_id

        unsigned long STDCALL mysql_thread_id(MYSQL *mysql);

       返回当前连接的线程ID。这个值可以作为mysql_kill()的参数来终止线程。

       如果连接丢失,重新连接mysql_ping(),线程ID会改变。这意味着您不应该获取线程ID并存储它以备以后使用。你应该在需要的时候得到它。


22、mysql_character_set_name

        const char *STDCALL mysql_character_set_name(MYSQL *mysql);

       返回当前连接的默认字符集名称。


23、mysql_set_character_set

        int STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname);

       设置当前连接的默认字符集。字符串csname指定有效的字符集名称。连接排序规则成为字符集的默认排序规则。这个函数的工作原理类似于SET NAMES语句,但是也设置mysql->字符集的值,从而影响mysql_real_escape_string()使用的字符集。

24、mysql_init

        MYSQL *STDCALL mysql_init(MYSQL *mysql);

       分配或初始化适合mysql_real_connect()的MYSQL对象。如果mysql是一个NULL指针,函数将分配、初始化并返回一个新对象。否则,初始化该对象并返回该对象的地址。如果mysql_init()分配了一个新对象,当调用mysql_close()关闭连接时,它将被释放。

       在非多线程环境中,mysql_init()在必要时自动调用mysql_library_init()。但是,mysql_library_init()在多线程环境中不是线程安全的,因此mysql_init()也不是。在调用mysql_init()之前,可以在生成任何线程之前调用mysql_library_init(),或者使用一个互斥锁来保护mysql_library_init()调用。这应该在任何其他客户端库调用之前完成。


25、mysql_ssl_set

        bool STDCALL mysql_ssl_set(MYSQL *mysql, const char *key, const char *cert,
                           const char *ca, const char *capath,
                           const char *cipher);

       mysql_ssl_set()用于使用SSL建立加密连接。mysql参数必须是一个有效的连接处理程序。任何未使用的SSL参数都可以给出NULL。(详细说明需要查看官方文档)


26、mysql_get_ssl_cipher

        const char *STDCALL mysql_get_ssl_cipher(MYSQL *mysql);

       Mysql_get_ssl_cipher()返回用于服务器的给定连接的加密密码。Mysql是mysql_init()返回的连接处理程序。


27、mysql_change_user

        bool STDCALL mysql_change_user(MYSQL *mysql, const char *user,
                               const char *passwd, const char *db);

       更改用户,并使db指定的数据库成为mysql指定连接上的默认(当前)数据库。在随后的查询中,这个数据库是不包含显式数据库说明符的表引用的默认值。


28、mysql_real_connect

        MYSQL *STDCALL 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 clientflag);

       (socket和clientflag不清楚可以默认为NULL和 0 )

       mysql_real_connect()尝试建立一个连接到运行在主机上的MySQL服务器。客户端程序在执行任何其他需要有效MYSQL连接处理程序结构的API函数之前,必须成功连接到服务器。


29、mysql_select_db

        int STDCALL mysql_select_db(MYSQL *mysql, const char *db);

       导致db指定的数据库成为mysql指定的连接上的默认(当前)数据库。在随后的查询中,这个数据库是不包含显式数据库说明符的表引用的默认值。

       Mysql_select_db()失败,除非连接的用户可以通过身份验证拥有使用数据库或其中某些对象的权限。


30、mysql_query

        int STDCALL mysql_query(MYSQL *mysql, const char *q);

       执行以null结束的字符串stmt_str所指向的SQL语句。通常情况下,字符串必须由一条没有分号(;)或\g结束的SQL语句组成。如果启用了多语句执行,则字符串可以包含以分号分隔的多条语句。参见3.6.2节,“多语句执行支持”。

       Mysql_query()不能用于包含二进制数据的语句;你必须使用mysql_real_query()。(二进制数据可能包含\0字符,mysql_query()将其解释为语句字符串的结尾。)

       要确定语句是否返回结果集,调用mysql_field_count()。参见第5.4.23节,“mysql_field_count()”。


31、mysql_send_query

        int STDCALL mysql_send_query(MYSQL *mysql, const char *q, unsigned long length);


32、mysql_real_query

        int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned long length);

       mysql_real_query()执行stmt_str所指向的SQL语句,一个字符串长度字节长。通常情况下,字符串必须由一条没有分号(;)或\g结束的SQL语句组成。如果启用了多语句执行,则字符串可以包含以分号分隔的多条语句。参见3.6.2节,“多语句执行支持”。

       Mysql_query()不能用于包含二进制数据的语句;你必须使用mysql_real_query()。(二进制数据可能包含\0字符,mysql_query()将其解释为语句字符串的结尾。)此外,mysql_real_query()比mysql_query()更快,因为它不调用语句字符串strlen()。

        要确定语句是否返回结果集,调用mysql_field_count()。参见第5.4.23节,“mysql_field_count()”。


33、mysql_store_result

        MYSQL_RES *STDCALL mysql_store_result(MYSQL *mysql);

       在调用mysql_real_query()或mysql_query()之后,对于成功生成结果集(SELECT, SHOW, DESCRIBE, EXPLAIN, CHECK TABLE,等等)的每条语句,必须调用mysql_store_result()或mysql_use_result()。在处理完结果集之后,还必须调用mysql_free_result()。

       对于其他语句,你不需要调用mysql_store_result()或mysql_use_result(),但是如果你在所有情况下调用mysql_store_result(),它不会造成任何损害或导致任何显著的性能下降。您可以通过检查mysql_store_result()是否返回一个非零值(稍后详细介绍)来检测语句是否有结果集。

       (详细说明需要查看官方文档)


34、mysql_use_result

        MYSQL_RES *STDCALL mysql_use_result(MYSQL *mysql);

       在调用mysql_real_query()或mysql_query()之后,对于成功生成结果集(SELECT, SHOW, DESCRIBE, EXPLAIN, CHECK TABLE,等等)的每条语句,必须调用mysql_store_result()或mysql_use_result()。在处理完结果集之后,还必须调用mysql_free_result()。

       Mysql_use_result()会初始化一个结果集检索,但不会像mysql_store_result()那样将结果集实际读入客户端。相反,必须通过调用mysql_fetch_row()来单独检索每一行。这将直接从服务器读取查询结果,而不将其存储在临时表或本地缓冲区中,这比mysql_store_result()更快,并且使用的内存要少得多。客户端仅为当前行分配内存和一个通信缓冲区,该缓冲区可能增长到max_allowed_packet字节

       (详细说明需要查看官方文档)

35、mysql_real_connect_nonblocking

        enum net_async_status STDCALL mysql_real_connect_nonblocking(
        MYSQL *mysql, const char *host, const char *user, const char *passwd,
        const char *db, unsigned int port, const char *unix_socket,
        unsigned long clientflag);

       Mysql_real_connect_nonblocking()的使用类似于mysql_real_connect()。后者的详细信息请参见5.4.55节“mysql_real_connect()”。


36、mysql_send_query_nonblocking

        enum net_async_status STDCALL mysql_send_query_nonblocking(
        MYSQL *mysql, const char *query, unsigned long length);


37、mysql_real_query_nonblocking

        enum net_async_status STDCALL mysql_real_query_nonblocking(
        MYSQL *mysql, const char *query, unsigned long length);

       Mysql_real_query_nonblocking()的用法类似于mysql_real_query()。后者的详细信息请参见5.4.59节“mysql_real_query()”。


38、mysql_store_result_nonblocking

        enum net_async_status STDCALL mysql_store_result_nonblocking(MYSQL *mysql, MYSQL_RES **result);

       Mysql_store_result_nonblocking()的用法与mysql_store_result()类似。后者请参见5.4.81节“mysql_store_result()”。


39、mysql_next_result_nonblocking

        enum net_async_status STDCALL mysql_next_result_nonblocking(MYSQL *mysql);

       Mysql_next_result_nonblocking()的用法与mysql_next_result()类似。后者的详细信息请参见5.4.48节“mysql_next_result()”。


40、mysql_select_db_nonblocking

        enum net_async_status STDCALL mysql_select_db_nonblocking(MYSQL *mysql,
                                                          const char *db,
                                                          bool *error);


41、mysql_get_character_set_info

        void STDCALL mysql_get_character_set_info(MYSQL *mysql,MY_CHARSET_INFO *charset);

42、mysql_session_track_get_first

        int STDCALL mysql_session_track_get_first(MYSQL *mysql,
                                          enum enum_session_state_type type,
                                          const char **data, size_t *length);


43、mysql_session_track_get_next

        int STDCALL mysql_session_track_get_next(MYSQL *mysql,
                                         enum enum_session_state_type type,
                                         const char **data, size_t *length);

三、支持本地infile接口函数

#define LOCAL_INFILE_ERROR_LEN 512

44、mysql_set_local_infile_handler

        void mysql_set_local_infile_handler(
    MYSQL *mysql, int (*local_infile_init)(void **, const char *, void *),
    int (*local_infile_read)(void *, char *, unsigned int),
    void (*local_infile_end)(void *),
    int (*local_infile_error)(void *, char *, unsigned int), void *);

       这个函数安装在LOAD DATA LOCAL语句执行期间使用的回调。它使应用程序能够对读取本地(客户端)数据文件施加控制。参数是连接处理程序、一组指向回调函数的指针,以及一个指向回调可用于共享信息的数据区域的指针。

45、mysql_set_local_infile_default

        void mysql_set_local_infile_default(MYSQL *mysql);

       将LOAD DATA LOCAL回调函数设置为C客户端库内部使用的默认值。如果没有调用mysql_set_local_infile_handler(),或者没有为每个回调函数提供有效的函数,库会自动调用这个函数。


46、mysql_shutdown

        int STDCALL mysql_shutdown(MYSQL *mysql,
                           enum mysql_enum_shutdown_level shutdown_level);

       请求数据库服务器关闭。连接的用户必须具有SHUTDOWN权限。MySQL服务器只支持一种关机方式;shutdown_level必须等于SHUTDOWN_DEFAULT。使用旧版本的libmysqlclient头文件和call mysql_shutdown()编译的动态链接可执行文件必须与旧的libmysqlclient动态库一起使用。


47、mysql_dump_debug_info

        int STDCALL mysql_dump_debug_info(MYSQL *mysql);

       指示服务器将调试信息写入错误日志。连接的用户必须具有SUPER权限。


48、mysql_refresh

        int STDCALL mysql_refresh(MYSQL *mysql, unsigned int refresh_options);

       此功能将刷新表或缓存,或重置复制服务器信息。连接的用户必须具有重新加载权限。

       options参数是由下列值的任意组合组成的位掩码。可以将多个值或在一个调用中一起执行多个操作。

REFRESH_GRANT

刷新授权表,比如FLUSH PRIVILEGES。

REFRESH_LOG

刷新日志,如Flush logs。

REFRESH_TABLES

刷新表缓存,就像刷新表一样。

REFRESH_HOSTS

刷新主机缓存,类似Flush HOSTS。

REFRESH_STATUS

重置状态变量,如FLUSH status。

REFRESH_THREADS

刷新线程缓存。

REFRESH_SLAVE

在复制服务器上,重置源服务器信息并重启副本,如reset SLAVE。

REFRESH_MASTER

在源服务器上,删除二进制日志索引中列出的二进制日志文件,并截断索引文件,如RESET MASTER。


49、mysql_kill

        int STDCALL mysql_kill(MYSQL *mysql, unsigned long pid);

       请求服务器终止由pid指定的线程。

       Mysql_kill()不能处理大于32位的值,但是为了防止杀死错误的线程,在以下情况下返回错误:

       1、如果给定的ID大于32位,mysql_kill()返回一个CR_INVALID_CONN_HANDLE错误。

       2、当服务器的内部线程ID计数器达到大于32位的值后,对于任何mysql_kill()调用,它返回一个ER_DATA_OUT_OF_RANGE错误,并且mysql_kill()失败。


50、mysql_set_server_option

        int STDCALL mysql_set_server_option(MYSQL *mysql,
                                    enum enum_mysql_set_option option);

       启用或禁用连接的一个选项。选项可以具有下列值之一。

OptionDescription
MYSQL_OPTION_MULTI_STATEMENTS_ON启用多语句支持
MYSQL_OPTION_MULTI_STATEMENTS_OFF关闭多语句支持


51、mysql_ping

        int STDCALL mysql_ping(MYSQL *mysql);

       检查与服务器的连接是否正常。如果连接断开并启用了自动重新连接,则会尝试重新连接。如果连接断开并且自动重新连接被禁用,mysql_ping()返回一个错误。

        
52、mysql_stat

        const char *STDCALL mysql_stat(MYSQL *mysql);

       返回一个字符串,其中包含类似于mysqladmin status命令提供的信息。这包括以秒为单位的正常运行时间,以及运行的线程、问题、重新加载和打开表的数量。


53、mysql_get_server_info

        const char *STDCALL mysql_get_server_info(MYSQL *mysql);

       返回一个表示MySQL服务器版本的字符串(例如,“8.0.25”)。


54、mysql_get_client_info

        const char *STDCALL mysql_get_client_info(void);

       返回一个表示MySQL客户端库版本的字符串(例如,“8.0.25”)。

       函数值是提供客户端库的MySQL版本。更多信息请参见3.6.11章节“获取服务器版本和客户端库版本”。


55、mysql_get_client_version

        unsigned long STDCALL mysql_get_client_version(void);

       返回一个表示MySQL客户端库版本的整数。该值的格式为XYYZZ,其中X是主版本,YY是发布级(或小版本),ZZ是发布级中的子版本:

Major_version *10000 + release_level*100 + sub_version

       例如,“8.0.25”返回80025。

       函数值是提供客户端库的MySQL版本。更多信息请参见3.6.11章节“获取服务器版本和客户端库版本”。


56、mysql_get_host_info

        const char *STDCALL mysql_get_host_info(MYSQL *mysql);

       返回描述正在使用的连接类型的字符串,包括服务器主机名。


57、mysql_get_server_version

        unsigned long STDCALL mysql_get_server_version(MYSQL *mysql);

       返回一个表示MySQL服务器版本的整数。该值的格式为XYYZZ,其中X是主版本,YY是发布级(或小版本),ZZ是发布级中的子版本:

Major_version *10000 + release_level*100 + sub_version

       例如,“8.0.25”返回80025。

       此函数在客户机程序中用于确定是否存在某些特定于版本的服务器功能。


58、mysql_get_proto_info

        unsigned int STDCALL mysql_get_proto_info(MYSQL *mysql);

       返回当前连接使用的协议版本。


59、mysql_list_dbs

        MYSQL_RES *STDCALL mysql_list_dbs(MYSQL *mysql, const char *wild);

       返回一个结果集,该结果集由服务器上的数据库名组成,该数据库名与野参数指定的简单正则表达式匹配。wild可以包含通配符%或_,也可以是匹配所有数据库的NULL指针。调用mysql_list_dbs()类似于执行查询SHOW DATABASES [LIKE wild]。

       你必须使用mysql_free_result()释放结果集。


60、mysql_list_tables

        MYSQL_RES *STDCALL mysql_list_tables(MYSQL *mysql, const char *wild);

       返回由当前数据库中与野参数指定的简单正则表达式匹配的表名组成的结果集。wild可以包含通配符%或_,也可以是一个NULL指针来匹配所有表。调用mysql_list_tables()类似于执行查询SHOW TABLES [LIKE wild]。

       你必须使用mysql_free_result()释放结果集。


61、mysql_list_processes

        MYSQL_RES *STDCALL mysql_list_processes(MYSQL *mysql);

       返回描述当前服务器线程的结果集。这与mysqladmin processlist或SHOW processlist查询报告的信息类型相同。

       你必须使用mysql_free_result()释放结果集。


62、mysql_options

        int STDCALL mysql_options(MYSQL *mysql, enum mysql_option option,
                          const void *arg);

       可用于设置额外的连接选项并影响连接的行为。这个函数可以被多次调用来设置多个选项。要获取选项值,请使用mysql_get_option()。

       (详细使用方法请查阅官方说明文档)


63、mysql_options4

        int STDCALL mysql_options4(MYSQL *mysql, enum mysql_option option,
                           const void *arg1, const void *arg2);

       Mysql_options4()类似于mysql_options(),但是有一个额外的第四个参数,因此可以为第二个参数中指定的选项传递两个值。

       (详细使用方法请查阅官方说明文档)


64、mysql_get_option

        int STDCALL mysql_get_option(MYSQL *mysql, enum mysql_option option,
                             const void *arg);

       返回可使用mysql_options()设置的选项的当前值。该值应被视为只读。

       option参数是您想要其值的选项。arg参数是一个指向存储选项值的变量的指针。Arg必须是一个指向适合选项参数类型的变量的指针。下表显示了每个选项值使用的变量类型。

       对于MYSQL_OPT_MAX_ALLOWED_PACKET,它可以设置一个会话或全局最大缓冲区大小,取决于mysql_options()的mysql参数是非NULL还是NULL, mysql_get_option()类似地返回会话或全局值取决于它的mysql参数。

arg TypeApplicable option Values
unsigned intMYSQL_OPT_CONNECT_TIMEOUTMYSQL_OPT_PROTOCOLMYSQL_OPT_READ_TIMEOUTMYSQL_OPT_RETRY_COUNTMYSQL_OPT_SSL_FIPS_MODEMYSQL_OPT_SSL_MODEMYSQL_OPT_WRITE_TIMEOUTMYSQL_OPT_ZSTD_COMPRESSION_LEVEL
unsigned longMYSQL_OPT_MAX_ALLOWED_PACKETMYSQL_OPT_NET_BUFFER_LENGTH
boolMYSQL_ENABLE_CLEARTEXT_PLUGINMYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDSMYSQL_OPT_GET_SERVER_PUBLIC_KEYMYSQL_OPT_LOCAL_INFILEMYSQL_OPT_OPTIONAL_RESULTSET_METADATAMYSQL_OPT_RECONNECTMYSQL_REPORT_DATA_TRUNCATION
const char *MYSQL_DEFAULT_AUTHMYSQL_OPT_BINDMYSQL_OPT_COMPRESSION_ALGORITHMSMYSQL_OPT_LOAD_DATA_LOCAL_DIRMYSQL_OPT_SSL_CAMYSQL_OPT_SSL_CAPATHMYSQL_OPT_SSL_CERTMYSQL_OPT_SSL_CIPHERMYSQL_OPT_SSL_CRLMYSQL_OPT_SSL_CRLPATHMYSQL_OPT_SSL_KEYMYSQL_OPT_TLS_CIPHERSUITESMYSQL_OPT_TLS_VERSIONMYSQL_PLUGIN_DIRMYSQL_READ_DEFAULT_FILEMYSQL_READ_DEFAULT_GROUPMYSQL_SERVER_PUBLIC_KEYMYSQL_SET_CHARSET_DIRMYSQL_SET_CHARSET_NAMEMYSQL_SHARED_MEMORY_BASE_NAME
argument not usedMYSQL_OPT_COMPRESS
cannot be queried (error is returned)MYSQL_INIT_COMMANDMYSQL_OPT_CONNECT_ATTR_DELETEMYSQL_OPT_CONNECT_ATTR_RESETMYSQL_OPT_NAMED_PIPE


65、mysql_free_result

        void STDCALL mysql_free_result(MYSQL_RES *result);

       Mysql_free_result()释放由mysql_store_result(), mysql_use_result(), mysql_list_dbs()等分配的内存。当你完成一个结果集,你必须通过调用mysql_free_result()释放它使用的内存。

       不要试图在释放结果集之后访问它。


66、mysql_free_result_nonblocking

        enum net_async_status STDCALL mysql_free_result_nonblocking(MYSQL_RES *result);

       Mysql_free_result_nonblocking()的用法类似于mysql_free_result()。后者请参见5.4.26节“mysql_free_result()”。这两种功能的区别如下:

        1、Mysql_free_result()不返回值。

        2、Mysql_free_result_nonblocking()返回一个enum net_async_status状态指示灯。

       MySQL 8.0.16新增mysql_free_result_nonblocking()。


67、mysql_data_seek

        void STDCALL mysql_data_seek(MYSQL_RES *result, uint64_t offset);

       查找查询结果集中的任意行。偏移值是行号。指定一个从0到mysql_num_rows(result)-1的值。

       这个函数要求结果集结构包含查询的整个结果,因此mysql_data_seek()只能与mysql_store_result()一起使用,而不能与mysql_use_result()一起使用。


68、mysql_row_seek

        MYSQL_ROW_OFFSET STDCALL mysql_row_seek(MYSQL_RES *result,
                                        MYSQL_ROW_OFFSET offset);

       将行游标设置为查询结果集中的任意行。offset值是一个行偏移量,通常是从mysql_row_tell()或mysql_row_seek()返回的值。这个值不是行号;要按数字查找结果集中的行,请使用mysql_data_seek()。

       这个函数要求结果集结构包含查询的整个结果,因此mysql_row_seek()只能与mysql_store_result()一起使用,而不能与mysql_use_result()一起使用。


69、mysql_field_seek

        MYSQL_FIELD_OFFSET STDCALL mysql_field_seek(MYSQL_RES *result,
                                            MYSQL_FIELD_OFFSET offset);

       将字段游标设置为给定的偏移量。下一次调用mysql_fetch_field()将检索与该偏移量关联的列的字段定义。

       要寻找行的开始,传递一个零偏移值。


70、mysql_fetch_row

        MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);

       Mysql_fetch_row()检索结果集的下一行:

       1、当在mysql_store_result()或mysql_store_result_nonblocking()之后使用时,如果没有更多的行需要检索,mysql_fetch_row()返回NULL。

       2、如果在mysql_use_result()之后使用,mysql_fetch_row()返回NULL,如果没有更多的行要检索或发生错误。

       行中值的数量由mysql_num_fields(result)给出。如果row持有调用mysql_fetch_row()的返回值,指向值的指针被访问为行[0]到行[mysql_num_fields(result)-1]。行中的NULL值由NULL指针指示。

       行中字段值的长度可以通过调用mysql_fetch_length()来获取。空字段和包含NULL的字段长度都是0;您可以通过检查字段值的指针来区分它们。如果指针是NULL,字段是NULL;否则,该字段为空。


71、mysql_fetch_row_nonblocking

        enum net_async_status STDCALL mysql_fetch_row_nonblocking(MYSQL_RES *res,
                                                          MYSQL_ROW *row);

       Mysql_fetch_row_nonblocking()的用法类似于mysql_fetch_row()。后者请参见5.4.22节“mysql_fetch_row()”。这两种功能的区别如下:

       1、mysql_fetch_row()返回包含下一行的MYSQL_ROW值,或者NULL。NULL返回的含义取决于在mysql_fetch_row()之前调用的函数:

        (1)当在mysql_store_result()或mysql_store_result_nonblocking()之后使用时,如果没有更多的行需要检索,mysql_fetch_row()返回NULL。

        (2)如果在mysql_use_result()之后使用,mysql_fetch_row()返回NULL,如果没有更多的行要检索或发生错误。

       2、mysql_fetch_row_nonblocking()返回一个enum net_async_status状态指示器,并接受第二个行参数,该参数提供了一个指向MYSQL_ROW值的指针。当返回状态为NET_ASYNC_COMPLETE时,row参数是一个指向包含下一行的MYSQL_ROW值的指针,或者是NULL。NULL的含义取决于在mysql_fetch_row_nonblocking()之前调用的函数:

        (1)当在mysql_store_result()或mysql_store_result_nonblocking()之后使用时,如果没有更多的行需要检索,则row参数为NULL。

        (2)当在mysql_use_result()之后使用时,如果没有更多的行要检索或发生错误,则row参数为NULL。

       MySQL 8.0.16新增了mysql_fetch_row_nonblocking()。

72、mysql_fetch_lengths

        unsigned long *STDCALL mysql_fetch_lengths(MYSQL_RES *result);

       返回结果集中当前行各列的长度。如果您计划复制字段值,这个长度信息对于优化也很有用,因为您可以避免调用strlen()。此外,如果结果集包含二进制数据,则必须使用此函数来确定数据的大小,因为strlen()对任何包含空字符的字段返回不正确的结果。

       空列和包含NULL值的列的长度为零。要了解如何区分这两种情况,请参见mysql_fetch_row()的描述。


73、mysql_fetch_field

        MYSQL_FIELD *STDCALL mysql_fetch_field(MYSQL_RES *result);

       以MYSQL_FIELD结构返回结果集的一列的定义。反复调用此函数以检索关于结果集中所有列的信息。mysql_fetch_field()在没有剩余字段时返回NULL。


74、mysql_list_fields

        MYSQL_RES *STDCALL mysql_list_fields(MYSQL *mysql, const char *table,
                                     const char *wild);

       返回一个空结果集,其中元数据提供关于给定表中与野参数指定的简单正则表达式匹配的列的信息。wild可以包含通配符%或_,也可以是一个NULL指针来匹配所有字段。调用mysql_list_fields()类似于执行查询SHOW COLUMNS FROM tbl_name [LIKE wild]。


75、mysql_escape_string

        unsigned long STDCALL mysql_escape_string(char *to, const char *from,
                                          unsigned long from_length);

       请勿使用此函数。Mysql_escape_string()没有允许它尊重当前字符集或引用上下文的参数。使用mysql_real_escape_string_quote()。


76、mysql_hex_string

        unsigned long STDCALL mysql_hex_string(char *to, const char *from,
                                       unsigned long from_length);

       这个函数创建一个合法的SQL字符串,用于SQL语句中。详情看String Literals.。

       (具体用法参考官方详细说明)


77、mysql_real_escape_string

        unsigned long STDCALL mysql_real_escape_string(MYSQL *mysql, char *to,
                                               const char *from,
                                               unsigned long length);

       这个函数创建一个合法的SQL字符串,用于SQL语句中。详情看String Literals

       (具体用法参考官方详细说明)


78、mysql_real_escape_string_quote

        unsigned long STDCALL mysql_real_escape_string_quote(MYSQL *mysql, char *to,
                                                     const char *from,
                                                     unsigned long length,
                                                     char quote);

       (具体用法参考官方详细说明)


79、mysql_debug

        void STDCALL mysql_debug(const char *debug);

       使用给定字符串执行DBUG_PUSH。mysql_debug()使用Fred Fish调试库。要使用此函数,必须编译客户端库以支持调试。详情看The DBUG Package.


80、myodbc_remove_escape

        void STDCALL myodbc_remove_escape(MYSQL *mysql, char *name);


81、mysql_thread_safe

        unsigned int STDCALL mysql_thread_safe(void);


82、mysql_read_query_result

        bool STDCALL mysql_read_query_result(MYSQL *mysql);


83、mysql_reset_connection

        int STDCALL mysql_reset_connection(MYSQL *mysql);

84、mysql_binlog_open

        int STDCALL mysql_binlog_open(MYSQL *mysql, MYSQL_RPL *rpl);


85、mysql_binlog_fetch

        int STDCALL mysql_binlog_fetch(MYSQL *mysql, MYSQL_RPL *rpl);


86、mysql_binlog_close

        void STDCALL mysql_binlog_close(MYSQL *mysql, MYSQL_RPL *rpl);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值