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语句执行错误。
估计楼主是没搞清楚SQL语句的正确执行与否。select * from table1 where 1>2;这个语句不会有符合条件的记录,会返回空集。但这个SQL语句本身是正确执行并返回一个空集。 所以mysql_query返回0 ,即执行正常。
惭愧惭愧,明白了,在mysql文档上看到“Zero if the statement was successful. Non-zero if an error occurred. ”,还以为是查询结果昵~问下,若是不是执行查询,而是执行更新语句,即"update product...",语句正确,但无查询结果,但mysql_query返回仍然是0,此时,那该如何判断是否更新成功?
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));
select * from tb where 1=0; 这样不能返回记录集select count(*) from tb where 1=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语句执行错误。
mysql_query(&mysql,stmt);
printf("%ld products updated",
(long) mysql_affected_rows(&mysql));
这样不能返回记录集select count(*) from tb where 1=0;
这样会返回一个记录集。
也就是说,聚合函数总是会返回一个记录集。
返回0不代表一定有结果集,rowcount可以是0
但是如果没有数据库或者没有表,是会返回<0的值的
写过API的实现,大都遵循此原则。