查看call stack 出现:
_variant_t::_variant_t(IDispatch * 0x00000000, unsigned char 1) line 1048 + 12 bytes
CJHC_ServerDlg::isNeedModify(CString {"SHJYC"}) line 3215 + 25 bytes
CJHC_ServerDlg::OnTimer(unsigned int 3) line 1628 + 44 bytes
CWnd::OnWndMsg(unsigned int 275, unsigned int 3, long 0, long * 0x00050b48) line 1829
CWnd::WindowProc(unsigned int 275, unsigned int 3, long 0) line 1585 + 30 bytes
AfxCallWndProc(CWnd * 0x00052758 {CJHC_ServerDlg hWnd=???}, HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 368
AfxWndProcBase(HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 220 + 21 bytes
USER32! 77df1ef0()
USER32! 77df204c()
USER32! 77df21af()
USER32! 77e08012()
USER32! 77e0fd24()
USER32! 77e0f76a()
USER32! 77e0f637()
USER32! 77e165db()
USER32! 77e16568()
CWinApp::DoMessageBox(const char * 0x004755bc, unsigned int 48, unsigned int 0) line 113 + 25 bytes
AfxMessageBox(const char * 0x0scadaline 3230
CJHC_ServerDlg::OnTimer(unsigned int 3) line 1628 + 44 bytes
CWnd::OnWndMsg(unsigned int 275, unsigned int 3, long 0, long * 0x000524b8) line 1829
CWnd::WindowProc(unsigned int 275, unsigned int 3, long 0) line 1585 + 30 bytes
AfxCallWndProc(CWnd * 0x00052758 {CJHC_ServerDlg hWnd=???}, HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 368
AfxWndProcBase(HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 220 + 21 bytes
USER32! 77df1ef0()
USER32! 77df204c()
USER32! 77df5f69()
CWnd::RunModalLoop(unsigned long 4) line 3478 + 19 bytes
CDialog::DoModal() line 536 + 12 bytes
CJHC_ServerApp::InitInstance() line 65 + 11 bytes
AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00133114, int 1) line 39 + 11 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00133114, int 1) line 30
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 77e71af6()
我的程序代码是:
try
{
CString ComString; //(char*)_bstr_t(SencondCom);
m_pRecordset.CreateInstance(_uuidof(Recordset));//初始化Recordset指针
CString sqlstr="select needcom from T_Comremote where manid='"+manid+"'";
//只发送30分钟内的数据。
BSTR bstrSQL = sqlstr.AllocSysString();
m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
//adOpenDynamic:动态 adLockOptimistic乐观封锁法 adCmdText:文本查询语句
if(!m_pRecordset->adoEOF)
{
}
m_pRecordset->Close(); //关闭数据记录
return needCom;
}catch(_com_error e)
{
//出错,重新连接
ConnectToODBC();
return needCom;
}m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
//adOpenDynamic:动态 adLockOptimistic乐观封锁法 adCmdText:文本查询语句
出错的是这一句,请问该怎么处理?
m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t::_variant_t(IDispatch * 0x00000000, unsigned char 1) line 1048 + 12 bytes
CJHC_ServerDlg::isNeedModify(CString {"SHJYC"}) line 3215 + 25 bytes
CJHC_ServerDlg::OnTimer(unsigned int 3) line 1628 + 44 bytes
CWnd::OnWndMsg(unsigned int 275, unsigned int 3, long 0, long * 0x00050b48) line 1829
CWnd::WindowProc(unsigned int 275, unsigned int 3, long 0) line 1585 + 30 bytes
AfxCallWndProc(CWnd * 0x00052758 {CJHC_ServerDlg hWnd=???}, HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 368
AfxWndProcBase(HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 220 + 21 bytes
USER32! 77df1ef0()
USER32! 77df204c()
USER32! 77df21af()
USER32! 77e08012()
USER32! 77e0fd24()
USER32! 77e0f76a()
USER32! 77e0f637()
USER32! 77e165db()
USER32! 77e16568()
CWinApp::DoMessageBox(const char * 0x004755bc, unsigned int 48, unsigned int 0) line 113 + 25 bytes
AfxMessageBox(const char * 0x0scadaline 3230
CJHC_ServerDlg::OnTimer(unsigned int 3) line 1628 + 44 bytes
CWnd::OnWndMsg(unsigned int 275, unsigned int 3, long 0, long * 0x000524b8) line 1829
CWnd::WindowProc(unsigned int 275, unsigned int 3, long 0) line 1585 + 30 bytes
AfxCallWndProc(CWnd * 0x00052758 {CJHC_ServerDlg hWnd=???}, HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 368
AfxWndProcBase(HWND__ * 0x001602ea, unsigned int 275, unsigned int 3, long 0) line 220 + 21 bytes
USER32! 77df1ef0()
USER32! 77df204c()
USER32! 77df5f69()
CWnd::RunModalLoop(unsigned long 4) line 3478 + 19 bytes
CDialog::DoModal() line 536 + 12 bytes
CJHC_ServerApp::InitInstance() line 65 + 11 bytes
AfxWinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00133114, int 1) line 39 + 11 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00133114, int 1) line 30
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 77e71af6()
我的程序代码是:
try
{
CString ComString; //(char*)_bstr_t(SencondCom);
m_pRecordset.CreateInstance(_uuidof(Recordset));//初始化Recordset指针
CString sqlstr="select needcom from T_Comremote where manid='"+manid+"'";
//只发送30分钟内的数据。
BSTR bstrSQL = sqlstr.AllocSysString();
m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
//adOpenDynamic:动态 adLockOptimistic乐观封锁法 adCmdText:文本查询语句
if(!m_pRecordset->adoEOF)
{
}
m_pRecordset->Close(); //关闭数据记录
return needCom;
}catch(_com_error e)
{
//出错,重新连接
ConnectToODBC();
return needCom;
}m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
//adOpenDynamic:动态 adLockOptimistic乐观封锁法 adCmdText:文本查询语句
出错的是这一句,请问该怎么处理?
m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
解决方案 »
- 求帮助,关于MFC中ChartWizard的使用方法
- 【100分求助】如何自动识别USB虚拟出来的串口
- 用CHtmlView导入一个HTML文件后,应该如何清干净里面的脚本,包括SCRIPT标签内的和各种事件响应?
- 菜鸟请教一个绘曲线的问题,请高手帮忙
- Ado+Access Debug版的正常但Release版的就不行!
- 我他吗的的把可乐倒在我桌子上,至少让中国北18省的互联网停止4个小时
- 我的程序中要用到一个WebBroswer控件,如何设置这个空间的缓存文件夹(ie的缓存文件夹不变,就我的这个WebBroswer的缓存文件设为我指定的,为
- 列表框控件的多行显示(在线等!!!)
- 要不要中断,在线等候
- 急救,谁有用汇编编成的文本文件编辑器,要有窗口模式的。不支持鼠标都可以。
- 升星,散分,呵呵 :)
- 都好几天了,还没搞出来啊!!!
我感觉的网络不太稳定,所以数据库连接已失效了。但不知道为什么没有被catch 呢。m_pConnection->execute 出错则是可以被catch的
这个错误是不会被你的代码catch的
你捕获的是_com_error
m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
中 (IDispatch*)m_pConnection 会把转化成一个_variant_t类型,估计是这里出错了
variant_t::_variant_t(IDispatch * 0x00000000, unsigned char 1) line 1048 + 12 bytes但问题时,这个是什么错误?应该怎么catch??
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");
///创建Connection对象
if(SUCCEEDED(hr))
{
m_pConnection->ConnectionTimeout=3;
///set the timeout 3 seconds,
hr = m_pConnection->Open(_bstr_t(LPCTSTR ("Provider=SQLOLEDB.1;Data Source="+CString(servername)+";"
" Initial Catalog="+CString(database)+"; User ID="+CString(username)+";PWD="+CString(pwd)+"")),"","",adModeUnknown);
}
}
catch(_com_error e)///捕捉异常
{
CString temp;
temp.Format("连接数据库错误信息:%s",e.ErrorMessage());
::MessageBox(NULL,temp,"提示信息",NULL);
return false;
}
能直接写...吗? FatSpiders(蜘蛛仔) 你的代码与我的有什么不同呢?
使用VARIANT,建议判断VARIANT里面的数据类型
VARIANT v
if(v.vt == VT_XXXX) //VT_XXXX代表期望的数据类型
{
}
然后再用