我用mfc写的基于对话在框项目,其中有一个1秒一次的mysql查询线程,用于程序在线的心跳检测。但是有几率在mysql查询那句时候程序就闪退,代码如下
线程中执行查询:
mysql_select(m_sqlheartCon, "select `xx` from `xx` where `xx`='" + str1 + "' and `upsd`='" + str2 + "';");
查询函数实现,就是传入m_sqlheartCon 对象,str为查询语句,然后返回字段值,具体如下:
//mysql查询
CString mysql_select(MYSQL mysql_Con, CString str)
{
CString re = "";
MYSQL_RES *result = NULL;
MYSQL_ROW sqlrow = NULL;
DWORD flags;//上网方式
if (IsNetworkAlive(&flags) == TRUE)
{
if (&mysql_Con != NULL)
{
if (mysql_query(&mysql_Con, str)== 0)
{
result = mysql_store_result(&mysql_Con);//保存查询到的数据到result
if (result)
{
if (mysql_num_rows(result) > 0)
{
sqlrow = mysql_fetch_row(result);
if (sqlrow != NULL)
{
re.Format("%s", sqlrow[0]);
}
}
}
}
}
if (result != NULL) mysql_free_result(result);//释放结果资源
}
return re;
}
如果出错就在if (mysql_query(&mysql_Con, str)== 0) 这句这里提示异常,我也分析不出来是为啥异常,有大佬能指导一下什么情况下mysql的查询会出现异常?