代码如下:
MYSQL *pData = mysql_init((MYSQL*) 0);
MYSQL_ROW row;
MYSQL_RES *result;
void queryMysql();
void test()
{
pData=mysql_real_connect(pData,"localhost", "root","123456","testData",0,0,0);
if(!pData)
{
::MessageBox(NULL,(LPCTSTR)"Failed",(LPCTSTR)"link mysql",0);
return;
}
else
{
mysql_query(pData,"set names gbk");
}
while(1) //test
{
queryMysql();
}
mysql_close( pData);
}
// 子函数
void queryMysql()
{
int flag =0;
if(pData)
{
flag = mysql_query(pData,"select id,price from product where productName='产品1';");
result = mysql_use_result(pData);
if(result)
{
while((row = mysql_fetch_row( result))!=0) // {
file<<row[0]<<" ,"<<row[1]<<"\t<<"\n";
}
}
mysql_free_result( result ) ;
}
}
问题:
1)无论数据库里是否含有所查询内容,flag均返回0,即查询成功,不应该啊。。。
2)虽然flag=0,若数据库确无此产品,则row=0;反之,row有值,且输入到file的结果与数据库一致
3)当flag = mysql_query(pData,"select id,price from duct where productName='产品1';");即无duct表时,返回1,即错误.
1)int mysql_query(MYSQL mysql, const char stmt_str) 这个函数返回0代码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 ,即执行正常。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。