本帖最后由 waterhill 于 2010-11-11 22:06:28 编辑

解决方案 »

  1.   

    1)无论数据库里是否含有所查询内容,flag均返回0,即查询成功,不应该啊
    int mysql_query(MYSQL *mysql, const char *stmt_str) 
    这个函数返回0代码SQL语句执行没有问题。
    显然你的SQL语句没有问题。难道你认为你的SQL语句本身有错误?
    2)虽然flag=0,若数据库确无此产品,则row=0;反之,row有值,且输入到file的结果与数据库一致
    对话,你的SQL语句正确执行。 所以flag=0
    返回结果集,如 无此产品 则ROW自然应该是0,
    3)当flag = mysql_query(pData,"select id,price from duct where productName='产品1';");即无duct表时,返回1,即错误.
    由于表不存在,会导致SQL语句执行错误。
      

  2.   

    估计楼主是没搞清楚SQL语句的正确执行与否。select * from table1 where 1>2;这个语句不会有符合条件的记录,会返回空集。但这个SQL语句本身是正确执行并返回一个空集。 所以mysql_query返回0 ,即执行正常。
      

  3.   

    惭愧惭愧,明白了,在mysql文档上看到“Zero if the statement was successful. Non-zero if an error occurred. ”,还以为是查询结果昵~问下,若是不是执行查询,而是执行更新语句,即"update product...",语句正确,但无查询结果,但mysql_query返回仍然是0,此时,那该如何判断是否更新成功?
      

  4.   

    mysql_affected_rows()char *stmt = "UPDATE products SET cost=cost*1.25 WHERE group=10";
    mysql_query(&mysql,stmt);
    printf("%ld products updated",
           (long) mysql_affected_rows(&mysql));
      

  5.   

    select * from tb where 1=0;
    这样不能返回记录集select count(*) from tb where 1=0;
    这样会返回一个记录集。
    也就是说,聚合函数总是会返回一个记录集。
      

  6.   

    只要SQL语句能正确执行,那么就返回0
    返回0不代表一定有结果集,rowcount可以是0
    但是如果没有数据库或者没有表,是会返回<0的值的
      

  7.   

    API返回值,0表示成功,>0表示有警告之类,<0,则表示严重错误,通常是这样子。
    写过API的实现,大都遵循此原则。