问题描述
mfc中使用combo控件,在控件中输入数据,以求下拉框中出现与所输入字符相关的文字来,使用
editupdate消息来实时刷新。
但是,在先获取编辑框的值,输入一段字符,再按Backspace删除掉字符的时崩溃。
报错:0x000007FEE0BD38D6 (libmysql.dll)处(位于 ProjectManage.exe 中)引发的异常:
0xC0000005: 读取位置 0x0000000000000 时发生访问冲突
解决办法
后来想了一下,觉得是在使用combo控件的时候,程序里没有处理“编辑框为空”的情况。
if (v_EditText == "")
{
//AfxMessageBox(_T("输入的数据不完整,请重新输入!"));
sql_select.Format("select distinct sensor_type from testManage where sensor_type!=\"\"");
mysql_query(&mysqlCon, (char*)(LPCTSTR)sql_select);
result = mysql_store_result(&mysqlCon);
while ((row = mysql_fetch_row(result)))
{
m_combo_select_sensor_type.AddString(row[0]);
}
UpdateData(false);
mysql_close(&mysqlCon);
return;
}
所以,当为空的时候不查询,直接重新读取一次数据库,然后直接返回,可以避免这个错误。
但是,是为什么报错,至今没有找出来。