我正在做课程设计,使用MFC开发,
使用ADO访问SQL SERVER 2K有个小问题:
在初始化时如何验证服务器名,用户名,密码,数据库名是否正确还有如何检验SQL语句的语法是否正确求助!

解决方案 »

  1.   

    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)来判断的话好像没有这样的方法和函数吧
      

  2.   

    在程序中加入出错处理,如果报错会抛出异常,根据弹出的消息会告诉你哪里出错。
    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;
    }