我在我的C程序中使用MySQL C应用程序接口,并试图弄清楚如何检查查询是否返回零行。有什么建议吗?
提前感谢
发布于 2018-10-19 00:04:03
来自developer mysql c-api-function-overview
在每个mysql_query() (或mysql_real_query())之后执行
。如果结果集调用成功,则该语句是SELECT语句,您可以读取这些行。如果结果集调用失败,则调用mysql_field_count()来确定结果是否确实是预期的。如果mysql_field_count()返回零,则该语句不返回任何数据(表示它是INSERT、UPDATE、DELETE等操作),并且不希望返回行。如果mysql_field_count()为非零,则该语句应该返回行,但没有返回。这表明该语句是一个失败的SELECT语句。有关如何做到这一点的示例,请参阅mysql_field_count()的说明。
您可以使用
unsigned int mysql_field_count(MYSQL *mysql)检查最近查询的结果并采取相应的操作。
来自developper.mysql的示例
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));
}
}
}https://stackoverflow.com/questions/52877763
复制相似问题