我的服务器名;WWW-FA8A5275D46,数据库名:HrMan ,没有密码。用VC60.0  建立一个基于对话框的MFC,在导入MSADO15.DLL 后,增加按钮,并编辑代码,编译没错,运行后,点击按钮,就出错。XP系统  ,装server 2000,没有设定数据源。
void CMy132Dlg::OnButton1() 
{
// TODO: Add your control notification handler code here
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
CString strConnectTmp;
_bstr_t NAME="WWW-FA8A5275D46";
_bstr_t UID="sa";
_bstr_t DBN="HrMan";
_bstr_t PID="";
strConnectTmp.Format("Provider=SQL Server;Server=%s;Database=%s;uid=%s;pwd=%s;",NAME,DBN,UID,PID);
_bstr_t strConnect=strConnectTmp;
pConn->Open(strConnect,"","",-1);
pConn->Close();
pConn.Release();
CoUninitialize();
}

解决方案 »

  1.   

    pConn->Open(strConnect,"","",-1); 
    改为
    pConn->Open(strConnect,"","",adModeUnknown); 
      

  2.   

    下面是我的代码  绝对正确的 不会有任何问题  你可以试下 如果还有问题我个人认为可能是你的 SQLSERVER2000没有打补丁  打到4   
    #import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")
    //ADO放置路径 一般为C:/ 
    ///////////////////////////////////////////////////////////////////////////
    连接
    // 初始化OLE/COM库环境 
    ::CoInitialize(NULL);
    try
    {
    // 创建Connection对象
    m_pConnection.CreateInstance("ADODB.Connection");
    // 设置连接字符串,必须是BSTR型或者_bstr_t类型
    CString str;
    str.Format("Provider=SQLOLEDB;Server=%s;database=%s;uid=%s;pwd=%s",dataip,database,uid,pwd);
    _bstr_t strConnect = str;
    HRESULT   hr=m_pConnection->Open(strConnect,"","",adModeUnknown);  
    /*
    具体调整
    */
    }
    // 捕捉异常
    catch(_com_error e)
    {
    return ;
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 关闭记录集和连接
    if (m_pRecordset != NULL)
    {
    try
    {
    m_pConnection->Close();
    }
    catch (_com_error e)
    {
    m_pConnection == NULL;
    return;
    }
    }
    if (m_pConnection!=NULL)
    {
    try
    {
    m_pConnection->Close();
    }
    catch (_com_error e)
    {
    m_pConnection == NULL;
    //AfxMessageBox(e.Description());
    return;
    }
    }
    // 释放环境
    ::CoUninitialize();
    //////////////////////////////////////////////////////////////////////
      

  3.   

    strConnectTmp.Format("Provider=SQL Server;Server=%s;Database=%s;uid=%s;pwd=%s;",NAME,DBN,UID,PID); 
    上面这句话中的Provider的值不应该是SQL Server,而应该是SQLOLEDB,即改为:
    strConnectTmp.Format("Provider=SQLOLEDB;Server=%s;Database=%s;uid=%s;pwd=%s;",NAME,DBN,UID,PID); 
      

  4.   

    http://topic.csdn.net/u/20090401/15/6cc0a322-bf53-4d0a-8c96-eaf449b37758.html楼上的高手帮我回答下这个问题
      

  5.   

    上面这句话中的Provider,的值不应该是SQL Server,而应该是SQLOLEDB,Provider不是驱动的意思吗?使用ODBC ,选择驱动SQL Server是可以连接的。
      

  6.   


    连接问题已解决:用ADO 控件找连接字串:
    pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=HrMan;Data Source=WWW-FA8A5275D46";
    pConn->Open("","","",adConnectUnspecified);
    只是运行后,出现Runtime Erorr ...”,点确定,程序就关了!热心朋友再研究研究,谢谢啊!我的分还等着送出!