1.前言
最近在用VC6开发的程序通过ODBC访问Oracle 9i数据库时,经常会报“ORA-01013: user requested cancel of current operation”错误。
进行UPDATE和INSERT操作时都有可能发生,而且不限于某一个数据表。
2.解决办法
在网上查了一下资料,总结出解决办法:
1.修改 $ORACLE_HOME/NETWORK/ADMIN/sqlnet.ora,添加或修改成:SQLNET.EXPIRE_TIME = 0
这将关闭Oracle的连接状态检测。
2.在ODBC管理中去掉 'Enable Query Timeout'复选框。如图1所示:
图1
3.在程序中的连接数据库的字符串中添加
QTO=F,成为这样的连接字符串:“;DSN=DB;UID=a;PWD=b;QTO=F”。
4。在Connection对象上设置SetQueryTimeout(0)。
app->m_pDatabase->SetQueryTimeout(0);
3.总结
经过一个星期的测试,证明这个办法确实好用。原来每天都会报这个错误,现在程序已经不间断运行了7天,一个这样的错误都没报。