mysql描述性统计函数_MySql5.1 C API函数描述

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值。

选项参量指的是你打算设置的选项 。 Arg 参量是选项的值 。 如果选项是整数 , 那么 arg 应指

向整数的值。

示例:

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)

描述

按照连接的当前字符集 , 将 “ from ” 中的字符串编码为转义 SQL 字符串 。 将结果置于 “ to ” 中 ,

并添加 1 个终结用 NULL 字节 。 编码的字符为 NUL (ASCII 0) 、 ‘ \n ’ 、 ‘ \r ’ 、 ‘ \ ’

、 ‘ ' ’ 、 ‘ " ’ 、 以 及

Control-Z ( 请参见 9.1 节 , “ 文字值 ” ) 。 ( 严格地讲 , MySQL 仅需要反斜杠和引号字符 ,

用于

引用转义查询中的字符串 。 该函数能引用其他字符 , 从而使得它们在日志文件中具有更好的

可读性 ) 。

“ from ” 指向的字符串必须是长度字节 “ long ” 。必须为 “ to ” 缓冲区分配至少 length*2+1

字节。

在最坏的情况下,每个字符或许需要使用 2 个字节进行编码,而且还需要终结 Null 字节 。 当

mysql_real_escape_string() 返回时, “ to ” 的内容是由 Null

终结的字符串。返回值是编码字

符串的长度,不包括终结用 Null 字符。

功能 该函数用于创建可在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权限。

“ options ” 参量是一种位掩码,由下述值的任意组合构成。能够以 “ Or ” (或)方式将多个值

组合在一起,用一次调用执行多项操作。

· REFRESH_GRANT

刷新授权表,与 FLUSH PRIVILEGES 类似。

· REFRESH_LOG

刷新日志,与 FLUSH LOGS 类似。

· REFRESH_TABLES

刷新表高速缓冲,与 FLUSH TABLES 类似。

· REFRESH_HOSTS

刷新主机高速缓冲,与 FLUSH HOSTS 类似。

· REFRESH_STATUS

复位状态变量,与 FLUSH STATUS 类似。

· REFRESH_THREADS

刷新线程高速缓冲。

· REFRESH_SLAVE

在从复制服务器上,复位主服务器信息,并重新启动从服务器,与 RESET SLAVE 类似。

· REFRESH_MASTER

在主复制服务器上,删除二进制日志索引中列出的二进制日志文件,并截短索引文件, 与

RESET MASTER 类似。

返回值 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)

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

选项可以取下述值之一:

MYSQL_OPTION_MULTI_STATEMENTS_ON 允许多语句支持。

MYSQL_OPTION_MULTI_STATEMENTS_OFF 禁止多语句支持。

返回值 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)

功能 返回执行前一个

SQL 语句期间生成的告警数目

返回值 告警计数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值