f(m_conn->GetState()==adStateOpen)
m_conn->Close();
不要放到catch里啊
m_conn->Close();
不要放到catch里啊
解决方案 »
- MFC学习第三天心得(GetMessage底层处理)—winapi篇
- 句柄意义,HICON m_hIcon为什么总是自动生成,求解
- 多线程中使用closesocket后,服务器端没有断开...
- stun 编程求助
- 关于COM 高手们请赐教!
- 如何获取一个 第三方窗口 中的相关资源如对话框ID的信息?
- 难啊~~~~~~~~~~~~~~~~~~~~~~~~~头皮都想破了。
- 你认为MFC的前景如何?C++会因为新兴的语言(如JAVA,C#)而死掉吗?
- 十万火急求助(在线等):关于mod逆语言
- 程序员考试的报名时间是什么时候?报名费是多少?北京得到哪里?问~~~~~~~~~~
- 诡异的问题!!!Win7和Win8下斜杠“\”成乱码了
- 图像处理与opencv
这个函数放在线程里,所以没有让出错信息显示出来.情况大致是这样的:远程往客户一台SQL server服务器快速导入数据时,会造成这台服务器的连接中断,执行这个操作的电脑都不能Ping通这台服务器了(但别的电脑可以Ping通),然后就出现这样的错误
{
bool bResult = true;
_ConnectionPtr m_conn;
CString open;
open.Format(_T("Provider=SQLOLEDB;Server=%s;Database=%s;UID=%s;PWD=%s;Pooling=false;"),CPublic::m_strDBServer,CPublic::m_strDBName,CPublic::m_strDBUserName,CPublic::m_strDBPWD);
try
{
m_conn.CreateInstance(__uuidof(Connection));
m_conn->ConnectionTimeout=600;
m_conn->CommandTimeout=120;
m_conn->Open((_bstr_t)open,_T(""),_T(""),adModeUnknown);
}
catch(_com_error e)
{
CString strErrormessage;
strErrormessage.Format(_T("连接数据库失败!\r错误信息:%s"),e.ErrorMessage());
AfxMessageBox(strErrormessage);
bResult = false;
} try
{
m_conn->Execute((_bstr_t)strSql,NULL,adExecuteNoRecords);
}
catch(_com_error e)
{
CString strK3ErrorMsg;
strK3ErrorMsg.Format(_T("查找失败!错误信息:%s"),e.ErrorMessage());
AfxMessageBox(strK3ErrorMsg);
bResult = false;
} //异常处理
if(!bResult)
{
if(m_conn->GetState())
m_conn->Close();
} return bResult;
}e]
bool CDlgOrder::ExcuteSQLCommandNoReturn(CString strSql)
{
bool bResult = true;
_ConnectionPtr m_conn;
CString open;
open.Format(_T("Provider=SQLOLEDB;Server=%s;Database=%s;UID=%s;PWD=%s;Pooling=false;"),CPublic::m_strDBServer,CPublic::m_strDBName,CPublic::m_strDBUserName,CPublic::m_strDBPWD);
try
{
m_conn.CreateInstance(__uuidof(Connection));
m_conn->ConnectionTimeout=600;
m_conn->CommandTimeout=120;
m_conn->Open((_bstr_t)open,_T(""),_T(""),adModeUnknown);
}
catch(_com_error e)
{
CString strErrormessage;
strErrormessage.Format(_T("连接数据库失败!\r错误信息:%s"),e.ErrorMessage());
AfxMessageBox(strErrormessage);
bResult = false;
} try
{
m_conn->Execute((_bstr_t)strSql,NULL,adExecuteNoRecords);
}
catch(_com_error e)
{
CString strK3ErrorMsg;
strK3ErrorMsg.Format(_T("查找失败!错误信息:%s"),e.ErrorMessage());
AfxMessageBox(strK3ErrorMsg);
bResult = false;
} //异常处理
if(!bResult)
{
if(m_conn->GetState())
m_conn->Close();
} return bResult;
}
{
bool bResult = true;
_ConnectionPtr m_conn;
CString open;
open.Format(_T("Provider=SQLOLEDB;Server=%s;Database=%s;UID=%s;PWD=%s;Pooling=false;"),CPublic::m_strDBServer,CPublic::m_strDBName,CPublic::m_strDBUserName,CPublic::m_strDBPWD);
do
{
try
{
m_conn.CreateInstance(__uuidof(Connection));
m_conn->ConnectionTimeout=600;
m_conn->CommandTimeout=120;
m_conn->Open((_bstr_t)open,_T(""),_T(""),adModeUnknown);
}
catch(_com_error e)
{
CString strErrormessage;
strErrormessage.Format(_T("连接数据库失败!\r错误信息:%s"),e.ErrorMessage());
AfxMessageBox(strErrormessage);
bResult = false;
break; //终止后续操作
} try
{
m_conn->Execute((_bstr_t)strSql,NULL,adExecuteNoRecords);
}
catch(_com_error e)
{
CString strK3ErrorMsg;
strK3ErrorMsg.Format(_T("查找失败!错误信息:%s"),e.ErrorMessage());
AfxMessageBox(strK3ErrorMsg);
bResult = false;
break; //终止后续操作(如果while里面还有相关数据库操作的话,否则这句可不要)
}
} while (0);
//异常处理
if(!bResult)
{
if(m_conn->GetState())
m_conn->Close();
} return bResult;
}