返回零行的查询的返回值是多少

neskvpey  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(300)

我在c程序中使用mysql c api,并试图找出如何检查查询是否返回零行。有什么建议吗?
提前谢谢

bihw5rsg

bihw5rsg1#

来自开发者mysql c-api-function-overview
在每个mysql\u query()或mysql\u real\u query()之后。如果结果集调用成功,则该语句是select语句,您可以读取行。如果结果集调用失败,请调用mysql\u field\u count(),以确定结果是否符合预期。如果mysql\u field\u count()返回零,则该语句不返回任何数据(表示它是insert、update、delete等),并且不应返回行。如果mysql\u field\u count()为非零,则该语句应该返回行,但没有返回。这表示该语句是一个失败的select语句。请参阅mysql\u field\u 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));
        }
    }
}

相关问题