什么异常错误,前面有没加CoInitialize(NULL)初始化COM环境.

解决方案 »

  1.   

    是否数据库连接字符串正确.COM是否初始化
      

  2.   

    MFC连接sql server 2000并且查询:
    在stdafx.h中加入:
    #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
    在void CAdoDlg::OnBtnQuery()添加下面代码:(三种方式)
    第一种:
    CoInitialize(NULL);//初始化COM库
    _ConnectionPtr pConn(__uuidof(Connection));//实例化一个connection对象pConn
    _RecordsetPtr pRst(__uuidof(Recordset)); //实例化一个Recordset对象pRst
    //连接字符串说明:Provider表示驱动引擎;User ID表示用户名;Password表示口令;Initial Catalog表示数据库名
    pConn->ConnectionString=
    "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=xx;Password=;Data Source=(local)";
    try 
    {
    pConn->Open("","","",adConnectUnspecified); 
    pRst=pConn->Execute("(_bstr_t)sql语句",NULL,adCmdText);
    while(!pRst->rsEOF)
    {
    ..(_bstr_t)pRst->GetCollect("列名");
    pRst->MoveNext();
    }
    }
    catch(_com_error e) 
    {
    MessageBox(e.Description());//输出异常原因。
    return;
    }
    pRst->Close();
    pConn->Close();
    pRst.Release();
    pConn.Release();
    CoUninitialize();//释放COM库
    第二种:
    将上面红色语句删除,添加:
    pRst->Open("(_variant_t)sql语句",_variant_t((IDispatch*)pConn),
    adOpenDynamic,adLockOptimistic,adCmdText);
    第三种:
    在上面蓝色语句后添加:
    _CommandPtr pCmd(__uuidof(Command));//实例化一个Command对象pCmd
    在将第二种添加的语句删除,添加:
    pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
    pCmd->CommandText="sql语句";
    pRst=pCmd->Execute(NULL,NULL,adCmdText);
    在上面绿色语句后添加:
    pCmd.Release();
      

  3.   

    没说明究竟是什么错误,建议先看下com library是否初始化。
      

  4.   

    COM初始化,数据库是否存在,或者是有密码,你应该把错误消息发出来看看的
      

  5.   

    其它该加的都加了,在运行后报出得异常:sql server不存在或拒绝访问,  过会又是:网络错误
      

  6.   

    其它该加的都加了,在运行后报出得异常:sql server不存在或拒绝访问, 过会又是:网络错误
    数据库确定存在,而且没有拼错,,编译通过,运行出异常  
      

  7.   

    SQL2005的连接字符串跟SQL2000不一样.
    参考这
    http://www.connectionstrings.com/sql-server-2005