MYSQL_FIELD* mysql_fetch_field(MYSQL_RES* result)
返回采用MYSQL_FIELD 结构的结果集的列。重复调用该函数,以检索关于结果集中所有列的信息。未剩余字段时,mysql_fetch_field() 返回NULL。
每次执行新的 SELECT 查询时,将复位mysql_fetch_field() ,以返回关于第一个字段的信息。
调用mysql_field_seek()也会影响 mysql_fetch_field() 返回的字段。
当前列的 MYSQL_FIELD 结构。如果未剩余任何列,返回NULL。
注意:如果调用了mysql_query() 以在表上执行 SELECT,但未调用 mysql_store_result(),如果调用mysql_fetch_field() 以请求BLOB字段的长度,MYSQL 将返回默认的Blob 长度(8KB)。
MYSQL_FIELD* field;
while(field = mysql_fetch_field(result))
printf("field name %s
",field->name); //打印出来的是每一列的字段名字
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(res);
fields = mysql_fetch_field(res);
for (i = 0; i < num_fields; ++i)
printf("Field %u is %s
", i, fields[i].name);
unsigned long* mysql_fetch_lengths(MYSQL_RES* result )
返回结果集当前行的列的长度。
如果结果集包含二进制数据,必须使用该函数来确定数据的大小,原因在于,对于包含NULL 字符的任何字段,strlen() 将返回错误的结果。
返回值:无符号长整数的数组表示各列的大小(不包含任何终结NULL字符)。如果出现错误,返回NULL
MYSQL_ROW row;
unsigned long *lengths;
unsigned int num_fields;
unsigned int i;
mysql_data_seek(res, 1);
row = mysql_fetch_row(res);
if (row)
{
num_fields = mysql_num_fields(res);
lengths = mysql_fetch_lengths(res);
for (i = 0; i < num_fields; ++i)
printf("Column %u is %lu bytes in length.
", i, lengths[i]);
}
MYSQL_ROW mysql_fetch_row(MYSQL_RES* result)
检索结果集的下一行。在mysql_store_result() 之后使用时,如果没有要检索的行,mysql_fetch_row() 返回NULL
行内值的数目由 mysql_num_fields(result) 给出。如果行中保存了调用 mysql_fetch_row() 返回的值,将按照 row[0] 到 row[mysql_num_fields(result)-1 ],访问这些值的指针。行中的NULL 值由NULL指针指明。
可以通过调用 mysql_fetch_lengths() 来获取行中字段值的长度。对于空字段以及包含 NULL 的字段,长度为0.通过检查字段值的指针,能够区分它们。如果指针为NULL,字段为NULL,否则字段为空。
返回值:下一行的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(”
");
}
int mysql_set_character_set(MYSQL* mysql, char* csname)
该函数用于当前连接设置默认的字符集。字符串csname指定 一个有效的字符集名称。连接校对成为字符集的默认校对。
返回值:0表示成功,非0值表示出现错误
if(!mysql_set_charset_name(&mysql,“utf8”))
{
printf("New client character set : %s
", mysql_character_set_name(&mysql));
}