zoukankan      html  css  js  c++  java
  • 有关Mysql的mysql_store_result函数返回NULL的情况以及其他注意事项

    成功调用mysql_query()后,mysql_store_result()能够返回NULL。出现该情况时,表明出现了下述条件之一:

    ·         出现了malloc()故障(例如,如果结果集过大)。

    ·         无法读取数据(在连接上出现了错误)。

    ·         查询未返回数据(例如,它是INSERT、UPDATE或DELETE)。

    通过调用mysql_field_count(),始终能检查语句是否应生成非空结果。如果mysql_field_count()返回0,结果为空,而且上一个查询是未返回值的语句(例如INSERT或DELETE)。如果mysql_field_count()返回非0值,语句应生成非空结果。关于这方面的示例,请参见mysql_field_count()函数介绍:

    返回作用在连接上的最近查询的列数。该函数的正常使用是在mysql_store_result()返回NULL(因而没有结果集指针)时。在这种情况下,可调用mysql_field_count()来判定mysql_store_result()是否应生成非空结果。这样,客户端就能采取恰当的动作,而无需知道查询是否是SELECT(或类似SELECT的)语句。在这里给出的示例中,演示了完成它的方法。返回表示结果集中列数的无符号整数。

    另一种可选的方法是,用mysql_errno(&mysql)替换mysql_field_count(&mysql)调用。在该情况下,无论语句是否是SELECT,你将直接从mysql_store_result()查找错误,而不是从mysql_field_count()的值进行推断。

    通过调用mysql_error()或mysql_errno(),可测试是否出现了错误。

    注意:

    对于成功调用mysql_query()进行select语句的查询,即使查询的数据不存在(即rowcount=0),result也不为NULL。result为NULL的情况只是检测上一个查询是否是有返回值的语句。

    范例:

     1     MYSQL_RES *result;
     2     unsigned int num_fields;
     3     unsigned int num_rows;
     4     if (mysql_query(&mysql, query_string))
     5     {
     6         // error
     7     }
     8     else // query succeeded, process any data returned by it
     9     {
    10         result = mysql_store_result(&mysql);
    11         if (result) // there are rows
    12         {
    13             num_fields = mysql_num_fields(result);
    14             // retrieve rows, then call mysql_free_result(result)
    15         }
    16         else // mysql_store_result() returned nothing; should it have?
    17         {
    18             if (mysql_field_count(&mysql) == 0)
    19             {
    20                 // query does not return data
    21                 // (it was not a SELECT)
    22                 num_rows = mysql_affected_rows(&mysql);
    23             }
    24             else // mysql_store_result() should have returned data
    25             {
    26                 fprintf(stderr, "Error: %s
    ", mysql_error(&mysql));
    27             }
    28         }
    29     }

     转载请注明地址:http://www.cnblogs.com/fnlingnzb-learner/p/5826533.html

  • 相关阅读:
    使用js固定div的高度
    iphone开发常用编码
    php mssql扩展SQL查询中文字段名解决方法
    Android带进度条文件上传
    PHP中替换换行符
    Android Timer计时器
    语法:MySQL中INSERT INTO SELECT的使用
    mysql的多表关联更新怎么写?
    Page Utility
    How do use CheckBoxList Utility
  • 原文地址:https://www.cnblogs.com/fnlingnzb-learner/p/5826533.html
Copyright © 2011-2022 走看看