ADO与SQL SERVER 2K的问题 我正在做课程设计,使用MFC开发,使用ADO访问SQL SERVER 2K有个小问题:在初始化时如何验证服务器名,用户名,密码,数据库名是否正确还有如何检验SQL语句的语法是否正确求助! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 HRESULT hr; HANDLE hThread=NULL; DWORD dwThreadId=0; BOOL bStop=FALSE; try { pConn->ConnectionTimeout=nTimeout; pConn->CursorLocation=adUseClient; if(pConn->State==adStateOpen) pConn->Close(); hThread=CProgressDlg::ShowProgress(dwThreadId,&bStop); hr=pConn->Open( szConn, "", "", adModeUnknown ); //停止线程窗口 PostThreadMessage(dwThreadId,WM_STOPTHREAD,0,0); bStop=TRUE; ::WaitForSingleObject(hThread,INFINITE); CloseHandle(hThread); if( SUCCEEDED(hr) ) return TRUE; else return FALSE; } catch( _com_error e) { PostThreadMessage(dwThreadId,WM_STOPTHREAD,0,0); bStop=TRUE; ::WaitForSingleObject(hThread,INFINITE); ADOERRMSG(e); return FALSE; } catch( ...) { MSGERROR(_T("SetupConn Failed")); PostThreadMessage(dwThreadId,WM_STOPTHREAD,0,0); bStop=TRUE; ::WaitForSingleObject(hThread,INFINITE); return FALSE; } }如果服务器名,用户名,密码,数据库名不正确的画就会执行Catch里面的内容如果你想不连接(Open)来判断的话好像没有这样的方法和函数吧 在程序中加入出错处理,如果报错会抛出异常,根据弹出的消息会告诉你哪里出错。try{//你的联接代码或执行的SQL语句代码} catch(_com_error &e) { _bstr_t bstrSource(e.Source()); _bstr_t bs = _bstr_t(" Error: ") + _bstr_t(e.Error()) + _bstr_t(" Msg: ") + _bstr_t(e.ErrorMessage()) + _bstr_t(" Description: ") + _bstr_t(e.Description()); MessageBox(bs, bstrSource); return; } 我还可以干什么 在一个完全透明的对话框上用鼠标绘画,但绘制的图画不能透明 有什么好的方法解决TCP传输经常断的问题? 如何在word和ie中取词 函数调用问题 哈希表的设计? 《Visual C++ 技术内幕》提供下载! 关于程序异常退出的问题,谢谢! 如何改变EDIT控件的大小? C++如何将EXCEL里某一列设置成超链接 【200分求助】基于UDP协议的可靠的电子邮件传输系统! 怎样用程序代码在SQL_server中建立数据库?急!!!
HANDLE hThread=NULL;
DWORD dwThreadId=0;
BOOL bStop=FALSE;
try
{
pConn->ConnectionTimeout=nTimeout;
pConn->CursorLocation=adUseClient;
if(pConn->State==adStateOpen)
pConn->Close(); hThread=CProgressDlg::ShowProgress(dwThreadId,&bStop);
hr=pConn->Open( szConn, "", "", adModeUnknown ); //停止线程窗口
PostThreadMessage(dwThreadId,WM_STOPTHREAD,0,0);
bStop=TRUE; ::WaitForSingleObject(hThread,INFINITE); CloseHandle(hThread); if( SUCCEEDED(hr) )
return TRUE;
else
return FALSE;
}
catch( _com_error e)
{ PostThreadMessage(dwThreadId,WM_STOPTHREAD,0,0);
bStop=TRUE;
::WaitForSingleObject(hThread,INFINITE); ADOERRMSG(e);
return FALSE;
}
catch( ...)
{
MSGERROR(_T("SetupConn Failed"));
PostThreadMessage(dwThreadId,WM_STOPTHREAD,0,0); bStop=TRUE;
::WaitForSingleObject(hThread,INFINITE); return FALSE;
}
}如果服务器名,用户名,密码,数据库名不正确的画就会执行Catch里面的内容
如果你想不连接(Open)来判断的话好像没有这样的方法和函数吧
try
{
//你的联接代码或执行的SQL语句代码
}
catch(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bs = _bstr_t(" Error: ") + _bstr_t(e.Error()) + _bstr_t(" Msg: ")
+ _bstr_t(e.ErrorMessage()) + _bstr_t(" Description: ")
+ _bstr_t(e.Description());
MessageBox(bs, bstrSource);
return;
}