为什么我连接数据库时总连不上?
AfxOleInit()
_ConnectionPtr m_pConnection;
//初始化及变量声明
//连接数据库try
{m_pConnection->Open("Driver=SQL Server;Database=mydb.mdf;Server=127.0.0.1;UID=sa;PWD=;","","",adModeUnknown);
}
catch(_com_error e)
{
  AfxMessageBox("连接数据库失败!");
  return FALSE;
}我用的是sql server2000,在连接数据库时,该怎样写OPEN语句呢?
相烦各位倾囊相助,愿以100分作答!!!!!!!

解决方案 »

  1.   


    /*初始化COM对象,创建智能指针实例,连接数据库*/
    if (!AfxOleInit())
    {
    AfxMessageBox("ole 初始化错误");
    return FALSE;
    }

    CString strOpen = "Provider=SQLOLEDB;Data Source= .;Initial Catalog= books;Integrated Security=SSPI;Persist Security Info=False";
       
    try
    {
    m_pConnection.CreateInstance(__uuidof(Connection));
    m_pConnection->Open((const char *)strOpen,"","",-1);
    }
    catch(...)
    {
    AfxMessageBox("数据库初始化错误,程序将关闭!");
    return FALSE;
    }
      

  2.   

    sql server的服务器开了吗?
    应该可以连的,我一直做的
    qq:316658
      

  3.   

    catch(...)不要眉毛胡子一把抓,用
    catch(_com_error *e)
    {
    }
      

  4.   

    不好意思,可能是这样
    catch(_com_error e)
    {
    }
      

  5.   

    在你的这一行后面
    _ConnectionPtr m_pConnection;加上一行
    pConnection.CreateInstance("ADODB.Connection");另外,你的数据库的结构是怎么样的,mydb.mdf 是……
      

  6.   

    在你的这一行后面
    _ConnectionPtr m_pConnection;加上一行
    pConnection.CreateInstance("ADODB.Connection");
    mydb.mdf 是access的数据库呀
    该为]mydb.db;
      

  7.   

    1. catch注意后,你可以看看那个 e 里面,存放的错误信息
    2. 可以先做成ODBC的数据源试试,因为这种形式连接比较简单
    Open("DSN=YourDataSource");
      

  8.   

    不通过DSN对SQL SERVER数据库进行连接: m_pConnection->Open("driver={SQL Server};Server=127.0.0.1;DATABASE=test;UID=sa;PWD=password","","",adModeUnknown);
      

  9.   

    语句就是这样的,如果还连不上,请不要急着检查你的VC代码——很有可能是你的SQL Server的设置问题,比如:用户名和密码设置得跟你的代码不符合,那是肯定连不上的。
      

  10.   

    很抱歉,我上述代码我都试过了,程序依然跳转到catch()出错处理里去了。
    难道真的是我的SQL Server有问题?各位大侠在帮忙想想办法,看还有什么可能出现纰漏。多谢了!!!
      

  11.   

    strDSN = "driver={SQL Server};server=" + strServerAddr + ";database=" + strDatabaseName + ";uid=" + strUser + ";pwd=" + strPassword + ";";