博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL API
阅读量:5826 次
发布时间:2019-06-18

本文共 20235 字,大约阅读时间需要 67 分钟。

hot3.png

MySql5.1 C API函数描述

[1] mysql_affected_rows()

定义函数    my_ulonglong mysql_affected_rows(MYSQL *mysql)

功能     返回sql执行后影响到的行数。

返回值   影响或检索的行数。

错误     无。

示例:

mysql_query(&mysql,"UPDATE products SET cost=cost*1.25 WHERE group=10");

printf("%ld products updated",(long) mysql_affected_rows(&mysql));

[2] mysql_autocommit()

定义函数    my_bool mysql_autocommit(MYSQL *mysql, my_bool mode)

功能        如果模式为“1”,启用autocommit模式;如果模式为“0”,禁止autocommit模式。

返回值      如果返回0,错误返回非0值。

[3] mysql_change_user()

定义函数    my_bool mysql_change_user(MYSQL *mysql, const char *user, const char *password, const char *db)

功能        更改用户,并使由db指定的数据库成为由mysql指定的连接上的默认数据库(当前数据库)。

返回值      0表示成功,非0值表示出现错误。

示例:

if (mysql_change_user(&mysql, "user", "password", "new_database"))

{

   fprintf(stderr, "Failed to change user.  Error: %s\n",

           mysql_error(&mysql));

}

[4] mysql_character_set_name()

定义函数    const char *mysql_character_set_name(MYSQL *mysql)

功能        为当前连接返回默认的字符集。

返回值      默认字符集。

[5] mysql_close()

void mysql_close(MYSQL *mysql)

功能      关闭前面打开的连接。如果句柄是由mysql_init()或mysql_connect()自动分配的,mysql_close()还将解除分配由mysql指向的连接句柄。

返回值     无。

[6] mysql_commit()

定义函数    my_bool mysql_commit(MYSQL *mysql)

功能      提交当前事务。

返回值   成功返回0,错误返回非0值。

[7] mysql_connect()

定义函数    MYSQL *mysql_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd)

功能      该函数已过时。最好使用mysql_real_connect()取而代之。

返回值   与mysql_real_connect()的相同。

[8] mysql_create_db()

定义函数    int mysql_create_db(MYSQL *mysql, const char *db)

功能      创建db参数命名的数据库。该函数过时。最好用mysql_query()来发出CREATE DATABASE语句。

返回值   成功返回0,错误返回非0值。

示例:

if(mysql_create_db(&mysql, "my_database"))

{

   fprintf(stderr, "Failed to create new database.  Error: %s\n",

           mysql_error(&mysql));

}

[9] mysql_data_seek()

定义函数    void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset)

功能      在查询结果集中寻找任意行。偏移值为行号,范围从0到mysql_num_rows(result)-1。

返回值    无。

[10] mysql_debug()

定义函数    void mysql_debug(const char *debug)

功能      用给定的字符串执行DBUG_PUSH。mysql_debug()采用Fred Fish调试库。要想使用该函数,必须编译客户端库,使之支持调试功能。请参见E.1节,“调试MySQL服务器”。请参见E.2节,“调试MySQL客户端”

返回值  无。

示例:   这里给出的调用将使客户端库在客户端机器的/tmp/client.trace中生成1个跟踪文件。

mysql_debug("d:t:O,/tmp/client.trace");

 

[11] mysql_drop_db()

定义函数    int mysql_drop_db(MYSQL *mysql, const char *db)

功能      撤销由db参数命名数据库。 该函数已过时。最好用mysql_query()来删除数据库

返回值    如果成功撤销了数据库,返回0。如果出现错误,返回非0值。

示例:

if(mysql_drop_db(&mysql, "my_database"))

  fprintf(stderr, "Failed to drop the database: Error: %s\n",

          mysql_error(&mysql));

[12] mysql_dump_debug_info()

定义函数    int mysql_dump_debug_info(MYSQL *mysql)

功能       指示服务器将一些调试信息写入日志。要想使之工作,已连接的用户必须具有SUPER权限。

返回值     如果命令成功,返回0。如果出现错误,返回非0值。

[13] mysql_eof()

定义函数    my_bool mysql_eof(MYSQL_RES *result)

功能      mysql_eof()确定是否读取到结果集最后1行。该函数已过时。应使用mysql_errno()或mysql_error()取而代之。

函数说明  

如果通过成功调用mysql_store_result()获得了结果集,客户端将在1次操作中收到整个结果集。在该情况下,从mysql_fetch_row()返回的NULL总表示已到达结果集末尾,而且没必要调用mysql_eof()。与mysql_store_result()一起使用时,mysql_eof()总返回“真”。

另一方面,如果你使用mysql_use_result()来初始化结果集检索,当重复调用mysql_fetch_row()时,将逐个地从服务器获取结果集的行。由于在该过程中,可能出现连接上的错误,从mysql_fetch_row()返回的NULL值不一定表示已正常地抵达结果集末尾。在该情况下,可以使用mysql_eof()来判定出现了什么情况。如果抵达结果集末尾,mysql_eof()返回非0值,如果出现错误,返回0。

返回值    错误返回0,如果抵达结果集的末尾,返回非0值。

示例:

在下面的示例中,介绍了使用mysql_eof()的方法:

mysql_query(&mysql,"SELECT * FROM some_table");

result = mysql_use_result(&mysql);

while((row = mysql_fetch_row(result)))

{

    // do something with data

}

if(!mysql_eof(result))  // mysql_fetch_row() failed due to an error

{

    fprintf(stderr, "Error: %s\n", mysql_error(&mysql));

}

但是,你也能使用标准的MySQL错误函数实现相同的结果:

mysql_query(&mysql,"SELECT * FROM some_table");

result = mysql_use_result(&mysql);

while((row = mysql_fetch_row(result)))

{

    // do something with data

}

if(mysql_errno(&mysql))  // mysql_fetch_row() failed due to an error

{

    fprintf(stderr, "Error: %s\n", mysql_error(&mysql));

}

[14] mysql_errno()

定义函数    unsigned int mysql_errno(MYSQL *mysql)

功能    mysql_errno()返回最近调用的API函数的错误代码,该函数调用可能成功也可能失败。“0”返回值表示未出现错误。在MySQL errmsg.h头文件中,列出了客户端错误消息编号。

注意   如果成功,某些函数,如mysql_fetch_row()等,不会设置mysql_errno()。

经验规则是,如果成功,所有向服务器请求信息的函数均会复位mysql_errno()。

返回值   失败,返回上次mysql_xxx()调用的错误代码。“0”表示未出现错误。

[15] mysql_error()

定义函数    const char *mysql_error(MYSQL *mysql)

功能    对于失败的最近调用的API函数,mysql_error()返回包含错误消息的、由Null终结的字符串。如果该函数未失败,mysql_error()的返回值可能是以前的错误,或指明无错误的空字符串。

说明    经验规则是,如果成功,所有向服务器请求信息的函数均会复位mysql_error()。

对于复位mysql_errno()的函数,下述两个测试是等效的:

if(mysql_errno(&mysql))

{

    // an error occurred

}

 

if(mysql_error(&mysql)[0] != '\0')

{

    // an error occurred

}

返回值

返回描述错误的、由Null终结的字符串。如果未出现错误,返回空字符串。

[16] mysql_escape_string()

应使用mysql_real_escape_string()取而代之!

该函数与mysql_real_escape_string()等同,但mysql_real_escape_string()会将连接处理程序作为其第1个参量,并按照当前字符集对字符串进行转义处理。mysql_escape_string()不采用连接参量,而且不考虑当前字符集设置。

[17] mysql_fetch_field()

定义函数    MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)

功能    返回采用MYSQL_FIELD结构的结果集的列。重复调用该函数,以检索关于结果集中所有列的信息。未剩余字段时,mysql_fetch_field()返回NULL。

每次执行新的SELECT查询时,将复位mysql_fetch_field(),以返回关于第1个字段的信息。调用mysql_field_seek()也会影响mysql_fetch_field()返回的字段。

返回值   当前列的MYSQL_FIELD结构。如果未剩余任何列,返回NULL。

示例:

MYSQL_FIELD *field;

 

while((field = mysql_fetch_field(result)))

{

    printf("field name %s\n", field->name);

}

[18] mysql_fetch_field_direct()

定义函数    MYSQL_FIELD *mysql_fetch_field_direct(MYSQL_RES *result, unsigned int fieldnr)

功能    给定结果集内某1列的字段编号fieldnr,以MYSQL_FIELD结构形式返回列的字段定义。Fieldnr的值应在从0到mysql_num_fields(result)-1的范围内。

返回值   对于指定列,返回MYSQL_FIELD结构。

示例:

unsigned int num_fields;

unsigned int i;

MYSQL_FIELD *field;

 

num_fields = mysql_num_fields(result);

for(i = 0; i < num_fields; i++)

{

    field = mysql_fetch_field_direct(result, i);

    printf("Field %u is %s\n", i, field->name);

}

[19] mysql_fetch_fields()

定义函数    MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)

功能    对于结果集,返回所有MYSQL_FIELD结构的数组。每个结构提供了结果集中1列的字段定义。

返回值  关于结果集所有列的MYSQL_FIELD结构的数组。

示例:

unsigned int num_fields;

unsigned int i;

MYSQL_FIELD *fields;

 

num_fields = mysql_num_fields(result);

fields = mysql_fetch_fields(result);

for(i = 0; i < num_fields; i++)

{

   printf("Field %u is %s\n", i, fields[i].name);

}

[20] mysql_fetch_lengths()

定义函数    unsigned long *mysql_fetch_lengths(MYSQL_RES *result)

功能    返回结果集内当前行的列的长度。如果打算复制字段值,该长度信息有助于优化,这是因为,你能避免调用strlen()。此外,如果结果集包含二进制数据,必须使用该函数来确定数据的大小,原因在于,对于包含Null字符的任何字段,strlen()将返回错误的结果。

对于空列以及包含NULL值的列,其长度为0。要想了解区分这两类情况的方法,请参见关于mysql_fetch_row()的介绍。

返回值  无符号长整数的数组表示各列的大小(不包括任何终结NULL字符)。如果出现错误,返回NULL。

示例:

MYSQL_ROW row;

unsigned long *lengths;

unsigned int num_fields;

unsigned int i;

 

row = mysql_fetch_row(result);

if (row)

{

    num_fields = mysql_num_fields(result);

    lengths = mysql_fetch_lengths(result);

    for(i = 0; i < num_fields; i++)

    {

         printf("Column %u is %lu bytes in length.\n", i, lengths[i]);

    }

}

 

[21] mysql_fetch_row()

定义函数    MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

功能   检索结果集的下一行。

返回值 下一行的MYSQL_ROW结构。如果没有更多要检索的行或出现了错误,返回NULL。

示例:

MYSQL_ROW row;

unsigned int num_fields;

unsigned int i;

 

num_fields = mysql_num_fields(result);

while ((row = mysql_fetch_row(result)))

{

   unsigned long *lengths;

   lengths = mysql_fetch_lengths(result);

   for(i = 0; i < num_fields; i++)

   {

       printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");

   }

   printf("\n");

}

[22] mysql_field_count()

定义函数    unsigned int mysql_field_count(MYSQL *mysql)

功能   返回作用在连接上的最近查询的列数。

函数说明 该函数的正常使用是在mysql_store_result()返回NULL(因而没有结果集指针)时。在这种情况下,可调用mysql_field_count()来判定mysql_store_result()是否应生成非空结果。这样,客户端就能采取恰当的动作,而无需知道查询是否是SELECT(或类似SELECT的)语句。在这里给出的示例中,演示了完成它的方法。

返回值  表示结果集中列数的无符号整数。

示例:

MYSQL_RES *result;

unsigned int num_fields;

unsigned int num_rows;

 

if (mysql_query(&mysql,query_string))

{

    // error

}

else // query succeeded, process any data returned by it

{

    result = mysql_store_result(&mysql);

    if (result)  // there are rows

    {

        num_fields = mysql_num_fields(result);

        // retrieve rows, then call mysql_free_result(result)

    }

    else  // mysql_store_result() returned nothing; should it have?

    {

        if(mysql_field_count(&mysql) == 0)

        {

            // query does not return data

            // (it was not a SELECT)

            num_rows = mysql_affected_rows(&mysql);

        }

        else // mysql_store_result() should have returned data

        {

            fprintf(stderr, "Error: %s\n", mysql_error(&mysql));

        }

    }

}

另一种可选的方法是,用mysql_errno(&mysql)替换mysql_field_count(&mysql)调用。在该情况下,无论语句是否是SELECT,你将直接从mysql_store_result()查找错误,而不是从mysql_field_count()的值进行推断。

[23] mysql_field_seek()

定义函数    MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)

功能   将字段光标设置到给定的偏移处

返回值

字段光标的前一个值。

[24] mysql_field_tell()

MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *result)

功能   返回上一个mysql_fetch_field()所使用的字段光标的定义。该值可用作mysql_field_seek()的参量。

返回值 字段光标的当前偏移量。

[25] mysql_free_result()

定义函数    void mysql_free_result(MYSQL_RES *result)

功能   释放由mysql_store_result()、mysql_use_result()、mysql_list_dbs()等为结果集分配的内存。完成对结果集的操作后,必须调用mysql_free_result()释放结果集使用的内存。

释放完成后,不要尝试访问结果集。

返回值  无。

[26] mysql_get_character_set_info()

定义函数    void mysql_get_character_set_info(MYSQL *mysql, MY_CHARSET_INFO *cs)

功能   该函数提供了关于默认客户端字符集的信息。可以使用mysql_set_character_set()函数更改默认的字符集。该函数是在MySQL 5.0.10中增加的。

示例:

if (!mysql_set_character_set(&mysql, "utf8"))

{

    MY_CHARSET_INFO cs;

    mysql_get_character_set_info(&mysql, &cs);

    printf("character set information:\n");

    printf("character set name: %s\n", cs.name);

    printf("collation name: %s\n", cs.csname);

    printf("comment: %s\n", cs.comment);

    printf("directory: %s\n", cs.dir);

    printf("multi byte character min. length: %d\n", cs.mbminlen);

    printf("multi byte character max. length: %d\n", cs.mbmaxlen);

}

[27] mysql_get_client_info()

定义函数    char *mysql_get_client_info(void)

功能   返回表示客户端库版本的字符串。

返回值 表示MySQL客户端库版本的字符串。

[28] mysql_get_client_version()

定义函数    unsigned long mysql_get_client_version(void)

功能   返回表示客户端库版本的整数。该值的格式是XYYZZ,其中X是主版本号,YY是发布级别,ZZ是发布级别内的版本号。例如,值40102表示客户端库的版本是4.1.2。

返回值 表示MySQL客户端库版本的整数。

[29] mysql_get_host_info()

char *mysql_get_host_info(MYSQL *mysql)

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

返回值 代表服务器主机名和连接类型的字符串。

[30] mysql_get_proto_info()

定义函数    unsigned int mysql_get_proto_info(MYSQL *mysql)

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

返回值 代表当前连接所使用协议版本的无符号整数。

[31] mysql_get_server_info()

char *mysql_get_server_info(MYSQL *mysql)

功能   返回代表服务器版本号的字符串。

返回值 代表服务器版本号的字符串。

[32] mysql_get_server_version()

定义函数    unsigned long mysql_get_server_version(MYSQL *mysql)

功能   以整数形式返回服务器的版本号。

返回值 表示MySQL服务器版本的数值,格式如下:

major_version*10000 + minor_version *100 + sub_version

例如,对于5.0.12,返回500012。

在客户端程序中,为了快速确定某些与版本相关的服务器功能是否存在,该函数很有用。

[33] mysql_hex_string()

定义函数    unsigned long mysql_hex_string(char *to, const char *from, unsigned long length)

功能   该函数用于创建可用在SQL语句中的合法SQL字符串。请参见9.1.1节,“字符串”

说明  该字符串从形式上编码为十六进制格式,每个字符编码为2个十六进制数。结果被置入其中,并添加1个终结Null字节。

“from”所指向的字符串必须是长度字节“long”。必须为“to”分配缓冲区,缓冲区至少为length*2+1字节长。当mysql_hex_string()返回时,“to”的内容为由Null终结的字符串。返回值是编码字符串的长度,不包括终结用Null字符。

可采用0xvalue或X'value'格式将返回值置于SQL语句中。但是,返回值不包括0x或X'...'。调用者必须提供所希望的格式是何种。

示例:

char query[1000],*end;

 end = strmov(query,"INSERT INTO test_table values(");

end = strmov(end,"0x");

end += mysql_hex_string(end,"What's this",11);

end = strmov(end,",0x");

end += mysql_hex_string(end,"binary data: \0\r\n",16);

*end++ = ')';

 

if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))

{

   fprintf(stderr, "Failed to insert row, Error: %s\n",

           mysql_error(&mysql));

}

示例中所使用的strmov()函数包含在mysqlclient库中,它的工作方式类似于strcpy(),但返回指向第1个参数终结Null的指针。

返回值  置于“to”中的值的长度,不包括终结用Null字符。

[34] mysql_info()

定义函数    char *mysql_info(MYSQL *mysql)

功能   检索字符串,该字符串提供了关于最近执行查询的信息,但仅对这里列出的语句有效。对于其他语句,mysql_info()返回NULL。字符串的格式取决于查询的类型,如本节所述。数值仅是说明性的,字符串包含与查询相适应的值。

返回值  字符串,它表示最近所执行查询的额外信息。如果该查询无可用信息,返回NULL。

[35] mysql_init()

定义函数    MYSQL *mysql_init(MYSQL *mysql)

功能   分配或初始化与mysql_real_connect()相适应的MYSQL对象。

返回值 初始化的MYSQL*句柄。如果无足够内存以分配新的对象,返回NULL。

[36] mysql_insert_id()

定义函数    my_ulonglong mysql_insert_id(MYSQL *mysql)

功能   返回由以前的INSERT或UPDATE语句为AUTO_INCREMENT列生成的值。在包含AUTO_INCREMENT字段的表中执行了INSERT语句后,应使用该函数。

返回值  在前面的讨论中予以了介绍。

[37] mysql_kill()

定义函数    int mysql_kill(MYSQL *mysql, unsigned long pid)

功能   请求服务器杀死由pid指定的线程。

返回值 0表示成功,非0值表示出现错误。

[38] mysql_library_end()

定义函数    void mysql_library_end(void)

功能  

它是mysql_server_end()函数的同义词。

[39] mysql_library_init()

定义函数    int mysql_library_init(int argc, char **argv, char **groups)

功能   这是mysql_server_init()函数的同义词。

[40] mysql_list_dbs()

定义函数    MYSQL_RES *mysql_list_dbs(MYSQL *mysql, const char *wild)

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

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

返回值  成功后返回MYSQL_RES结果集。如果出现错误,返回NULL。

[41] mysql_list_fields()

定义函数    MYSQL_RES *mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)

功能    返回由给定表中的字段名称组成的结果集,给定表与由通配符参数指定的简单正则表达式匹配。通配符参数可以包含通配符“%”或“_”,也可以是NULL指针,以便与所有的字段匹配。调用mysql_list_fields()的方法类似于执行查询SHOW COLUMNS FROM tbl_name [LIKE wild]。

注意  建议使用SHOW COLUMNS FROM tbl_name,而不是mysql_list_fields()。

返回值  如果成功,返回MYSQL_RES结果集。如果出现错误,返回NULL。

[42] mysql_list_processes()

定义函数    MYSQL_RES *mysql_list_processes(MYSQL *mysql)

功能    返回描述当前服务器线程的结果集。必须用mysql_free_result()释放结果集。

返回值  如果成功,返回MYSQL_RES结果集。如果出现错误,返回NULL。

[43] mysql_list_tables()

定义函数    MYSQL_RES *mysql_list_tables(MYSQL *mysql, const char *wild)

功能    返回由当前数据库内的表名组成的结果集,当前数据库与由通配符参数指定的简单正则表达式匹配。通配符参数可以包含通配符“%”或“_”,也可以是NULL指针,以便与所有的表匹配。调用mysql_list_tables()的方法类似于执行查询HOW tables [LIKE wild]。

说明  必须用mysql_free_result()释放结果集。

返回值 如果成功返回MYSQL_RES结果集。 如果出现错误,返回NULL。

[44] mysql_more_results()

定义函数    my_bool mysql_more_results(MYSQL *mysql)

功能    如果当前执行的查询存在多个结果,返回“真”,而且应用程序必须调用mysql_next_result()来获取结果。

返回值  如果存在多个结果,返回“真”(1),如果不存在多个结果,返回“假”(0)。

[45] mysql_next_result()

定义函数    int mysql_next_result(MYSQL *mysql)

功能    如果存在多个查询结果,mysql_next_result()将读取下一个查询结果,并将状态返回给应用程序。

如果前面的查询返回了结果集,必须为其调用mysql_free_result()。

返回值  0 成功并有多个结果。-1   成功但没有多个结果。>0 出错

[46] mysql_num_fields()

定义函数    unsigned int mysql_num_fields(MYSQL_RES *result)

功能    返回结果集中的行数。

返回值  表示结果集中行数的无符号整数。

示例:  同22

[47] mysql_num_rows()

定义函数    my_ulonglong mysql_num_rows(MYSQL_RES *result)

功能    返回结果集中的行数。

返回值  结果集中的行数。

[48] mysql_options()

定义函数    int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)

功能    可用于设置额外的连接选项,并影响连接的行为。可多次调用该函数来设置数个选项。

应在mysql_init()之后、以及mysql_connect()或mysql_real_connect()之前调用mysql_options()。

返回值  成功时返回0。如果使用了未知选项,返回非0值。

示例:

MYSQL mysql;

 mysql_init(&mysql);

mysql_options(&mysql,MYSQL_OPT_COMPRESS,0);

mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"odbc");

if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))

{

    fprintf(stderr, "Failed to connect to database: Error: %s\n",

          mysql_error(&mysql));

}

[49] mysql_ping()

定义函数    int mysql_ping(MYSQL *mysql)

功能    检查与服务器的连接是否工作。如果连接丢失,将自动尝试再连接。该函数可被闲置了较长时间的客户端使用,用以检查服务器是否已关闭了连接,并在必要时再次连接。

返回值   如果与服务器的连接有效返回0。如果出现错误,返回非0值。返回的非0值不表示MySQL服务器本身是否已关闭,连接可能因其他原因终端,如网络问题等。

[50] mysql_query()

定义函数    int mysql_query(MYSQL *mysql, const char *query)

功能    执行由“Null终结的字符串”查询指向的SQL查询。如果希望了解查询是否应返回结果集,可使用mysql_field_count()进行检查。请参见25.2.3.22节,“mysql_field_count()”

返回值   如果查询成功,返回0。如果出现错误,返回非0值。

 

[51] 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_real_connect()尝试与运行在主机上的MySQL数据库引擎建立连接。在你能够执行需要有效MySQL连接句柄结构的任何其他API函数之前,mysql_real_connect()必须成功完成。

参数的指定方式如下:

·        第1个参数应是已有MYSQL结构的地址。调用mysql_real_connect()之前,必须调用mysql_init()初始化MYSQL结构。通过mysql_options()调用,可更改多种连接选项。

·         “host”的值必须是主机名或IP地址。

·         “user”参数包含用户的MySQL登录ID。

·         “passwd”参数包含用户的密码。

·         “db”是数据库名称。如果db为NULL,连接会将默认的数据库设为该值。

·        如果“port”不是0,其值将用作TCP/IP连接的端口号。注意,“host”参数决定了连接的类型。

·        如果unix_socket不是NULL,该字符串描述了应使用的套接字或命名管道。注意,“host”参数决定了连接的类型。

·         client_flag的值通常为0,但是,也能将其设置为下述标志的组合,以允许特定功能。具体参数值请查看相关资料。

·        对于host,指定NULL值或空字符串("")。

·        对于user,指定NULL值或空字符串。

·        对于passwd,指定NULL值。(对于密码,mysql_real_connect()调用中的空字符串的值不能被选项文件中的字符串覆盖,这是因为,空字符串明确指明MySQL账户必须有空密码)。

·        对于db,指定NULL值或空字符串

·        对于port,指定“0”值。

·        对于unix_socket,指定NULL值。

对于某一参数,如果在选项文件中未发现值,将使用它的默认值,如本节前面介绍的那样。

返回值    如果连接成功,返回MYSQL*连接句柄。如果连接失败,返回NULL。

示例:

MYSQL mysql;

mysql_init(&mysql);

mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");

if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))

{

    fprintf(stderr, "Failed to connect to database: Error: %s\n",

          mysql_error(&mysql));

}

 

[52] mysql_real_escape_string()

定义函数    unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length)

功能    该函数用于创建可在SQL语句中使用的合法SQL字符串。

示例:

char query[1000],*end;

end = strmov(query,"INSERT INTO test_table values(");

*end++ = '\'';

end += mysql_real_escape_string(&mysql, end,"What's this",11);

*end++ = '\'';

*end++ = ',';

*end++ = '\'';

end += mysql_real_escape_string(&mysql, end,"binary data: \0\r\n",16);

*end++ = '\'';

*end++ = ')';

if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))

{

   fprintf(stderr, "Failed to insert row, Error: %s\n",

           mysql_error(&mysql));

}

该示例中使用的strmov()函数包含在mysqlclient库中,工作方式与strcpy()类似,但会返回指向第1个参数终结用Null的指针。

返回值   置于“to”中的值的长度,不包括终结用Null字符。

 

[53] mysql_real_query()

定义函数    int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)

功能    执行由“query”指向的SQL查询,它应是字符串长度字节“long”。正常情况下,字符串必须包含1条SQL语句,而且不应为语句添加终结分号(‘;’)或“\g”。如果允许多语句执行,字符串可包含由分号隔开的多条语句。对于包含二进制数据的查询,必须使用mysql_real_query()而不是mysql_query(),这是因为,二进制数据可能会包含‘\0’字符。此外,mysql_real_query()比mysql_query()快,这是因为它不会在查询字符串上调用strlen()。

返回值  如果查询成功,返回0。如果出现错误,返回非0值。

 

[54] mysql_refresh()

定义函数    int mysql_refresh(MYSQL *mysql, unsigned int options)

功能    该函数用于刷新表或高速缓冲,或复位复制服务器信息。连接的用户必须具有RELOAD权限。

返回值   0表示成功,非0值表示出现错误。

 

[55] mysql_reload()

定义函数    int mysql_reload(MYSQL *mysql)

功能    请求MySQL服务器重新加载授权表。连接的用户必须具有RELOAD权限。该函数已过时。最好使用mysql_query()来发出SQL FLUSH PRIVILEGES语句。

返回值  0表示成功,非0值表示出现错误。

 

[56] mysql_rollback()

定义函数    my_bool mysql_rollback(MYSQL *mysql)

功能    回滚当前事务。

返回值  如果成功返回0,如果出现错误,返回非0值。

 

[57] mysql_row_seek()

定义函数    MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset)

功能    将行光标置于查询结果集中的任意行。“offset”值是行偏移量,它应是从mysql_row_tell()或mysql_row_seek()返回的值。该值不是行编号,如果你打算按编号查找结果集中的行,请使用mysql_data_seek()。

返回值  行光标的前一个值。该值可传递给对mysql_row_seek()的后续调用。

 

[58] mysql_row_tell()

定义函数    MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result)

功能    对于上一个mysql_fetch_row(),返回行光标的当前位置。该值可用作mysql_row_seek()的参量。

仅应在mysql_store_result()之后,而不是mysql_use_result()之后使用mysql_row_tell()。

返回值   行光标的当前偏移量。

 

[59] mysql_select_db()

定义函数    int mysql_select_db(MYSQL *mysql, const char *db)

功能    使由db指定的数据库成为由mysql指定的连接上的默认数据库(当前数据库)。

返回值  0表示成功,非0值表示出现错误。

 

[60] mysql_set_character_set()

定义函数    int mysql_set_character_set(MYSQL *mysql, char *csname)

功能    该函数用于为当前连接设置默认的字符集。

返回值  0表示成功,非0值表示出现错误。

示例:

MYSQL mysql;

mysql_init(&mysql);

if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))

{

    fprintf(stderr, "Failed to connect to database: Error: %s\n",

          mysql_error(&mysql));

}

if (!mysql_set_charset_name(&mysql, "utf8"))

{

    printf("New client character set: %s\n", mysql_character_set_name(&mysql));

}

 

[61] mysql_set_server_option()

int mysql_set_server_option(MYSQL *mysql, enum enum_mysql_set_option option)

功能    允许或禁止连接的选项。

返回值  0表示成功,非0值表示出现错误。

 

[62] mysql_shutdown()

定义函数    int mysql_shutdown(MYSQL *mysql, enum enum_shutdown_level shutdown_level)

功能    请求数据库服务器关闭。

返回值  0表示成功,非0值表示出现错误。

 

[63] mysql_sqlstate()

定义函数    const char *mysql_sqlstate(MYSQL *mysql)

功能    返回由Null终结的字符串,该字符串包含关于上次错误的SQLSTATE错误代码。

返回值  包含SQLSTATE错误码的、由Null终结的字符串。

 

[64] mysql_ssl_set()

定义函数    int 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_real_connect()之前调用它。除非在客户端库中允许了OpenSSL支持,否则mysql_ssl_set()不作任何事。

参数说明:

·         Mysql是从mysql_init()返回的连接处理程序。

·         key是key文件的路径名。

·         cert是证书文件的路径名。

·         ca是证书授权文件的路径名。

·         capath是指向目录的路径名,该目录中包含以pem格式给出的受信任SSL CA证书。

·         cipher是允许密码的列表,用于SSL加密。

对于任何未使用的SSL参数,可为其给定NULL。

返回值   该函数总返回0。如果SSL设置不正确,当你尝试连接时,mysql_real_connect()将返回错误。

 

[65] mysql_stat()

定义函数    char *mysql_stat(MYSQL *mysql)

功能    返回包含特定信息的字符串,该信息与mysqladmin status命令提供的信息类似。包括以秒为单位的正常运行时间,以及运行线程的数目,问题数,再加载次数,以及打开的表数目。

返回值   描述服务器状态的字符集。如果出现错误,返回NULL。

 

[66] mysql_store_result()

定义函数    MYSQL_RES *mysql_store_result(MYSQL *mysql)

功能    对于成功检索了数据的每个查询(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK TABLE等),必须调用mysql_store_result()或mysql_use_result() 。

返回值  具有多个结果的MYSQL_RES结果集合。如果出现错误,返回NULL。

 

[67] mysql_thread_id()

定义函数    unsigned long mysql_thread_id(MYSQL *mysql)

功能    返回当前连接的线程ID。该值可用作mysql_kill()的参量以杀死线程。

如果连接丢失,并使用mysql_ping()进行了再连接,线程ID将改变。这意味着你不应获取线程ID并保存它供以后使用。应在需要时获取它。

返回值       当前连接的线程ID。

 

[68] mysql_use_result()

定义函数    MYSQL_RES *mysql_use_result(MYSQL *mysql)

功能    对于成功检索数据的每个查询(SELECT、SHOW、DESCRIBE、EXPLAIN),必须调用mysql_store_result()或mysql_use_result()。

返回值  MYSQL_RES结果结构。如果出现错误,返回NULL。

 

[69] mysql_warning_count()

定义函数    unsigned int mysql_warning_count(MYSQL *mysql)

返回值   告警计数。

转载于:https://my.oschina.net/u/156363/blog/62070

你可能感兴趣的文章
Linux/windows P2V VMWare ESXi
查看>>
Windows XP倒计时到底意味着什么?
查看>>
tomcat一步步实现反向代理、负载均衡、内存复制
查看>>
运维工程师在干什么学些什么?【致菜鸟】
查看>>
Linux中iptables详解
查看>>
java中回调函数以及关于包装类的Demo
查看>>
maven异常:missing artifact jdk.tools:jar:1.6
查看>>
终端安全求生指南(五)-——日志管理
查看>>
Nginx 使用 openssl 的自签名证书
查看>>
创业维艰、守成不易
查看>>
PHP环境安装套件:快速安装LAMP环境
查看>>
CSS3
查看>>
ul下的li浮动,如何是ul有li的高度
查看>>
C++ primer plus
查看>>
python mysqlDB
查看>>
UVALive 3942 Remember the Word Tire+DP
查看>>
从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~目录...
查看>>
被需求搞的一塌糊涂,怎么办?
查看>>
c_数据结构_队的实现
查看>>
jquery 选择器总结
查看>>