首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL C API -返回零行的查询的返回值是什么

MySQL C API -返回零行的查询的返回值是什么
EN

Stack Overflow用户
提问于 2018-10-18 23:41:27
回答 1查看 139关注 0票数 0

我在我的C程序中使用MySQL C应用程序接口,并试图弄清楚如何检查查询是否返回零行。有什么建议吗?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 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()的说明。

您可以使用

代码语言:javascript
复制
unsigned int mysql_field_count(MYSQL *mysql)

检查最近查询的结果并采取相应的操作。

来自developper.mysql的示例

代码语言:javascript
复制
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));
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52877763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档