使用 ADO 執行 SQL 命令時,若超過預設 30 秒仍未回傳結果,即會拋出 IDispatch error 3121。注意:這不是連線逾時(ConnectionTimeout),也非連線閒置逾時,純粹是命令執行逾時。
Connection 或 Commandtry
{
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;
}
return S_FALSE;
}
catch (_com_error e)
{
GetErrorMsg(e.ErrorMessage());
return S_FALSE;
}
ConnectionTimeout(預設 15 秒)僅控制建立連線階段。來源:「靜侯佳音」博客,原文連結:https://thomas.blog.51cto.com/177910/30587。