函数func如下,部分跟数据库无关的作了省略,这个函数会在很多地方被调用,而且调用的非常频繁现在问题是当程序运行一段时间后,mysql_real_connect将无法执行通过,常常连不上数据库了,请问这会是什么原因造成的,请高手指点一下,万分感谢!!!!!
int func(void){   
   MYSQL mysql; //db handler
   MYSQL_RES *results;
   MYSQL_ROW row;
   mysql_init (&mysql);
   char buff[40];
   if(!mysql_real_connect(&mysql,"localhost","root","123456","sd",3306,NULL,0)){
   mysql_close(&mysql);
       return NULL;  //link db error
   }    ........
      
   if(mysql_real_query(&mysql,strsql,strlen(strsql))){
   mysql_close(&mysql);
   return NULL;
   }   ..............   if(!(results = mysql_store_result(&mysql))){
   mysql_free_result(results);
   mysql_close(&mysql);
   return NULL; //fetch record error
   }   
   mysql_free_result(results);
   mysql_close(&mysql);
   return NULL;
}
   

解决方案 »

  1.   

    将mysql定义为全局变量,不要每次都去连接,然后看看mysql_init 是否返回成功了
      

  2.   

    至少MYSQL*应该作为func的参数啊
    这代码,写得......
      

  3.   

    楼上的意思是将
      MYSQL mysql; //db handler 
      mysql_init (&mysql); 
      if(!mysql_real_connect(&mysql,"localhost","root","123456","sd",3306,NULL,0))在程序初始化时调用,然后将mysql作为参数,传递到各个需要使用的数据库的函数中?数据库用的不多,请多指教