if(mysql_init(&mysql)==NULL)
{
sprintf(ErrMsg,"We are outof Memory");
return(false);
} if(!mysql_real_connect(&mysql,"localhost","test","test","test",3306,NULL,0))
{
sprintf(ErrMsg,"Connect to DB failed Error Code: %d",mysql_errno(&mysql));
return(false);
}else
{
return(true);
}
// now we connected
 
//当在程序执行到这里的时候,假如mysql当了,下面的语句执行时就出现崩溃,很有可能原来的mysql结构就需要重新生成
// 问题是如何去判断 mysql结构是否需要重构呢? 怎么去判断 mysql是否还连接着,我希望实现的功能是程序到一半,mysql当了,然后mysql重启了,程序能够自动再连接查询,高手给点建议
           if(mysql_ping(&mysql)==0)
  {
char sql[1024];
sprintf(sql,"INSERT INTO `test3`(`a`,`b`,`c`)\
VALUES('%d','%d','%d')",a1,b1,c1);

if(mysql_query(&mysql,sql))
{sprintf(ErrMsg,"Error: %s",mysql_error(&mysql));
return(false);
}else

{
    

return(true); 

}  }

解决方案 »

  1.   

    不知道你说的崩溃是什么意思,如果是程序彻底异常退出了,那就要看看库是不是正确的。理论上,执行mysql_query之前做一下mysql_ping是对的,如果mysql_query的时候服务器停了,你应该得到CR_SERVER_LOST或者CR_SERVER_GONE_ERROR,这个时候重新连接一下就好了。你也可以用mysql_option指定MYSQL_OPT_RECONNECT。
      

  2.   

    怎么才能获得 CR_SERVER_LOST 这些错误?好像没有返回的参数
      

  3.   

    mysql> select error_count;
    ERROR 1054 (42S22): Unknown column 'error_count' in 'field list'
    mysql> select @@error_count;
    +---------------+
    | @@error_count |
    +---------------+
    |             1 |
    +---------------+
    1 row in set (0.00 sec)