ADO:IDispatch error 3121错误的解决
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://thomas.blog.51cto.com/177910/30587 |
在开发ADO应用中,老是碰到很多莫名奇妙的错误,Idispatch error 3121就是其中一个,也查过网上的解决办法,不太好用,所以写出来大家共享一下,这个错误是在执行一条SQL命令超时时报的错误,不是指链接超时,在Connection对象里有一个参数ConnectionTimeOut,它是指建数据库链接时的超时,如执行
m_pConnection->ConnectionTimeOut = 15
m_pConnection->Open(newVal,"","",adConnectUnspecified)
如果超过15秒,还没建立数据库链接,就会出错了。
也不是指连接空闲的时间,而是指执行SQL语句时的超时,它是通过CommandTimeout 属性来控制的,缺省是30秒。就是如果执行SQL语句超过30秒还没有取到结果就会出IDispatch error 3121错误。在网上见到有人把它这个参数设置成30000,其实不用那么麻烦,如果你不想它超时设为0就可以了,它永不超时。例子如下
try
{ // Build DB Connection HRESULT hr = m_pConnection.CreateInstance(__uuidof(Connection)); if(FAILED(hr)) return S_FALSE; hr = m_pConnection->Open(newVal,"","",adConnectUnspecified); if(SUCCEEDED(hr)) { m_pConnection->CommandTimeout = 0; m_pRs.CreateInstance(__uuidof(Recordset)); return S_OK; } else return S_FALSE; } catch(_com_error e) // Capture exceptions { GetErrorMsg(e.ErrorMessage()); return S_FALSE; } 本文出自 “静侯佳音” 博客,请务必保留此出处http://thomas.blog.51cto.com/177910/30587 本文出自 51CTO.COM技术博客 |


callme
博客统计信息
热门文章
最新评论
友情链接