_LOST
在查询过程中,与服务器的连接丢失。
? CR_UNKNOWN_ERROR
出现未知错误。
25.2.3.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。
错误
? CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。
? CR_SERVER_GONE_ERROR
MySQL服务器不可用。
? CR_SERVER_LOST
在查询过程中,与服务器的连接丢失。
? CR_UNKNOWN_ERROR
出现未知错误。
25.2.3.44. mysql_more_results()
my_bool mysql_more_results(MYSQL *mysql)
描述
如果当前执行的查询存在多个结果,返回“真”,而且应用程序必须调用mysql_next_result()来获取结果。
返回值
如果存在多个结果,返回“真”(1),如果不存在多个结果,返回“假”(0)。
在大多数情况下,可调用mysql_next_result()来测试是否存在多个结果,如果存在多个结果,对检索进行初始化操作。
请参见25.2.9节,“多查询执行的C API处理”。请参见25.2.3.45节,“mysql_next_result()”。
错误
无。
25.2.3.45. mysql_next_result()
int mysql_next_result(MYSQL *mysql)
描述
如果存在多个查询结果,mysql_next_result()将读取下一个查询结果,并将状态返回给应用程序。
如果前面的查询返回了结果集,必须为其调用mysql_free_result()。
调用了mysql_next_result()后,连接状态就像你已为下一查询调用了mysql_real_query()或mysql_query()时的一样。这意味着你能调用mysql_store_result()、mysql_warning_count()、mysql_affected_rows()等等。
如果mysql_next_result()返回错误,将不执行任何其他语句,也不会获取任何更多的结果,
请参见25.2.9节,“多查询执行的C API处理”。
返回值
| 返回值 |
描述 |
| 0 |
成功并有多个结果。 |
| -1 |
成功但没有多个结果。 |
| >0 |
出错 |
错误
? CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。例如,没有为前面的结果集调用mysql_use_result()。
? CR_SERVER_GONE_ERROR
MySQL服务器不可用。
? CR_SERVER_LOST
在查询过程中,与服务器的连接丢失。
? CR_UNKNOWN_ERROR
出现未知错误。
25.2.3.46. mysql_num_fields()
unsigned int mysql_num_fields(MYSQL_RES *result)
要想传递MYSQL*参量取而代之,请使用无符号整数mysql_field_count(MYSQL *mysql)。
描述
返回结果集中的行数。
注意,你可以从指向结果集的指针或指向连接句柄的指针获得行数。如果mysql_store_result()或mysql_use_result()返回NULL,应使用连接句柄(因而没有结果集指针)。在该情况下,可调用mysql_field_count()来判断mysql_store_result()是否生成了非空结果。这样,客户端程序就能采取恰当的行动,而不需要知道查询是否是SELECT语句(或类似SELECT的语句)。在下面的示例中,介绍了执行该操作的方式。
请参见25.2.13.1节,“为什么在mysql_query()返回成功后,mysql_store_result()有时会返回NULL”。
返回值
表示结果集中行数的无符号整数。
错误
无。
示例:
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_errno(&mysql))
{ fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}
else if (mysql_field_count(&mysql) == 0)
{ // query does not return data
// (it was not a SELECT)
num_rows = mysql_affected_rows(&mysql);
}
}
}
另一种可选方式是(如果你知道你的查询应返回结果集),使用检查“mysql_field_count(&mysql) is = 0”来替换mysql_errno(&mysql)调用。仅当出错时才应使用它。
25.2.3.47. mysql_num_rows()
my_ulonglong mysql_num_rows(MYSQL_RES *result)
描述
返回结果集中的行数。
mysql_num_rows()的使用取决于是否采用了mysql_store_result()或mysql_use_result()来返回结果集。如果使用了mysql_store_result(),可以立刻调用mysql_num_rows()。如果使用了mysql_use_result(),mysql_num_rows()不返回正确的值,直至检索了结果集中的所有行为止。
返回值
结果集中的行数。
错误
无。