请先看以下代码: 
    AfxOleInit();
    _ConnectionPtr m_pConn;
    HRESULT hr;
    CString m_sConn="Provider=SQLOLEDB.1;Data Source=127.0.0.1;Initial Catalog=hj";
    hr=m_pConn.CreateInstance("ADODB.Connection");
    if(FAILED(hr))
    {
AfxMessageBox("连接实例创建失败!");
return FALSE;
    }
    try
    {
        hr=m_pConn->Open((_bstr_t)m_sConn,"sa","",adConnectUnspecified);    
        if (FAILED(hr))
        {
            AfxMessageBox("不能连接数据库 source!");
            return FALSE;
        }
    }
    catch(_com_error e)
    {
        AfxMessageBox("不能连接数据库 error!");
        return FALSE;
    }以上代码,编译链接都通过了,但运行时却老是弹对话框:"不能连接数据库 error!",也就是catch里面那个AfxMessageBox。
另外,我是在连接本机上的一个SQL 2000的数据库,数据库名字是hj,没有密码。数据库方面应该没有问题,因为我用SQL 2000的“企业管理器”都能够成功登陆并打开数据库hj。
请问各位大哥我可能是哪里搞错了?
我第一次做数据库的东西,问的问题也许很弱智,各位大哥不要笑我哈。

解决方案 »

  1.   

    另外在头文件中,还加了下面一句:
    #import "c:\program files\common files\system\ado\msado15.dll" \
    no_namespace \
    rename ("EOF", "EndOfFile")
    这应该没什么问题吧?我看别人的都是这样写的。
    各位大哥帮我看看吧,拜托了!
      

  2.   

    1.CString m_sConn = "Driver=SQL Server;Database=hj;Server=127.0.0.1;UID=sa;PWD= ";2.hr=m_pConn->Open((_bstr_t)m_sConn,"sa","",adModeUnknown);
      

  3.   

    你数据库安装的时候是否使用了混合登陆方式,不是的话,你用SA登陆不了,只能用WINDOWS认证方式登陆
      

  4.   

    HRESULT hr;
    try
    {
    hr=pConnection.CreateInstance("ADODB.Connection");
    if(SUCCEEDED(hr))
    {
    CString sql; 
    sql.Format("driver={SQL Server};Server=%s;DATABASE=%s;UID=%s;PWD=%s",serverip,dsn,UserName,dbpass);
    hr=pConnection->Open((LPCTSTR)sql,"","",adModeUnknown);
    }
    }
    catch(_com_error e)
    {
    CString errormessage;
    errormessage.Format("连接数据库失败!\r\n错误信息:%s又出毛病了:(",e.ErrorMessage());
    AfxMessageBox(errormessage);
    }试试我这个吧。我一直用的。我的是混合登陆方式,如果装数据库时设置不一样,要注意修改。
      

  5.   

    我都不晓得什么是混合登陆方式,不过我用SQL server 2000中的“企业管理器”登陆时,就是用的用户sa,而且能登陆成功
      

  6.   

    这样说吧,我安装SQL SERVER 2000的时候没有改任何设置,都是用的默认值,是不是不对?