数据库读写捕获_com_error错误的注意事项
2009-08-06 14:26
337 查看
Code
char* m_sErrorMessage="";//数据库操作类的成员变量
try{
pRecordset = m_pConnection->Execute(_bstr_tsqlString),&vRecordsAffected,adCmdText) ;
return true;
}
catch (CException* ex)
{
ex->GetErrorMessage(m_sErrorMessage,255);
return false;
}
catch(_com_error e)
{
CString tchStr=e.ErrorMessage();
m_sErrorMessage=(LPSTR)(LPCTSTR)tchStr;
return false;
}
catch()
{
m_sErrorMessage="查询记录时遇到未知错误!!";
return false;
}
当走到m_sErrorMessage=(LPSTR)(LPCTSTR)tchStr 一步后,m_sErrorMessage有正常值,但走完return false后m_sErrorMessage指针错误,原因是tchStr为局部变量,而m_sErrorMessage=(LPSTR)(LPCTSTR)tchStr 让m_sErrorMessage指针指向了要被销毁的局部变量。
解决方法:把m_sErrorMessage声明为std::string, ex->GetErrorMessage(m_sErrorMessage,255)处则先用char m_chErrorMessage[255]获取错误信息,再直接 m_sErrorMessage=m_chErrorMessage赋值
char* m_sErrorMessage="";//数据库操作类的成员变量
try{
pRecordset = m_pConnection->Execute(_bstr_tsqlString),&vRecordsAffected,adCmdText) ;
return true;
}
catch (CException* ex)
{
ex->GetErrorMessage(m_sErrorMessage,255);
return false;
}
catch(_com_error e)
{
CString tchStr=e.ErrorMessage();
m_sErrorMessage=(LPSTR)(LPCTSTR)tchStr;
return false;
}
catch()
{
m_sErrorMessage="查询记录时遇到未知错误!!";
return false;
}
当走到m_sErrorMessage=(LPSTR)(LPCTSTR)tchStr 一步后,m_sErrorMessage有正常值,但走完return false后m_sErrorMessage指针错误,原因是tchStr为局部变量,而m_sErrorMessage=(LPSTR)(LPCTSTR)tchStr 让m_sErrorMessage指针指向了要被销毁的局部变量。
解决方法:把m_sErrorMessage声明为std::string, ex->GetErrorMessage(m_sErrorMessage,255)处则先用char m_chErrorMessage[255]获取错误信息,再直接 m_sErrorMessage=m_chErrorMessage赋值
相关文章推荐
- 数据库SQLite之常见错误及注意事项<二>
- com.ibm.mm.sdk.common.DKUsageError: DGL3616A: 发生意外的 SQL 错误; ICM7015: 在库服务器的 SQL 操作期间,发生意外错误。有关错误的详细信息,请参阅数据库文档。 (STATE) : [LS RC = 7015, SQL RC = 100
- 使用PHP和MySQL添加数据库时的小错误及注意事项总结
- 【自爆系列】浅谈我对数据库性能注意事项的错误了解
- python 读写文件 个人 常犯错误 注意事项
- 数据库的存储过程(理解,示例,注意事项,异常分析)
- 优化数据库的注意事项
- 网站改版最容易犯的几个错误和网站改版注意事项
- cell重用注意事项(对于经常出现重用错误的程序猿吗,可参考一下)
- maven_spring_test 错误和注意事项汇总
- 数据库设计注意事项
- 关系型数据库设计原则与注意事项
- 数据库(表结构)设计技巧及注意事项
- 数据库表创建注意事项
- Windows Phone - 使用Sterling数据库几个注意事项『转』
- 【转】PostgreSQL 数据库在 Windows Server 2008 上安装注意事项
- powerdesigner设计oracle数据库注意事项
- Qt使用MySQL库编译出错:mysql_com.h:320: error: C2146: 语法错误: 缺少“;”(在标识符“fd”的前面)
- 【转】 数据库中的Halloween问题及其注意事项
- python3 文件读写,编码错误UnicodeDecodeError