开发者社区> 问答> 正文

代码中无论数据库中是否存在,mysql_query总返回0

代码如下:

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,即错误.

展开
收起
蛮大人123 2016-02-05 22:16:45 3644 0
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 ,即执行正常。

    2019-07-17 18:38:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载

相关镜像