程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> ADO:IDispatch error 3121錯誤的解決

ADO:IDispatch error 3121錯誤的解決

編輯:關於C語言

在開發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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved