a2561346
a2561346
2019-07-24 09:55
采纳率: 75%
浏览 352

mfc项目,使用mysql查询时有几率造成程序闪退

我用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的查询会出现异常?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • caozhy
    已采纳

    可能是数据库服务器连接不稳定,可以用 TRY CATCH宏包裹这个出错的代码,遇到错误跳过去,让程序继续运行。

    点赞 评论
  • oyljerry
    oyljerry 2019-07-24 10:08

    收集一下异常时候的crash dump等,然后分析一下,出错的异常调用堆栈

    点赞 评论
  • churuxu
    churuxu 2019-07-26 11:43

    一般是你用法有问题,看不出来的情况,可以这么解决:
    mysql数据读写可以做一个独立的exe,主程序要读写数据时,调这个exe,那样主程序就不会崩溃了

    点赞 评论
  • a2561346
    a2561346 2019-07-30 14:44

    没有有效的解答方案,我还是自己解决吧

    点赞 评论

相关推荐