_ConnectionPtr m_pConnection;
//SQL2000连接
m_pConnection->Open("Provider=SQLOLEDB.1;Data Source=Example;Initial Catalog=Example;User ID=sa; PWD=123","","",1);请问:我要操作我的电脑d:\example.mdf,请问,上述连接语句可否连接的上.如果我的程序编译完了之后,我再将example.mdf移到f:盘根目录,此时次连接语句是否有效?

解决方案 »

  1.   

    CString sqlserver,sqlconnect;
    sqlserver="192.168.0.96"; //设定数据库服务器
    sqlconnect="Provider=SQLOLEDB.1;Password=product;Persist Security Info=True;User ID=product;Initial Catalog=pubs;Data Source="+sqlserver;
    HRESULT hr;  ///设定一个句柄
    try
    {
    hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
    if(SUCCEEDED(hr))
    {
    hr = m_pConnection->Open(_bstr_t(sqlconnect),"","",adModeUnknown); //连接数据
    }
    }
    catch(_com_error e)///捕捉异常
    {
    CString errormessage;
    errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
    AfxMessageBox(errormessage);///显示错误信息
    }
    这样较好,只要是数据库打开就可以了
      

  2.   

    我还是没连接上,下面是我的源代码
    pConn->Open("Provider=MSDASQL.1;Password=12345678;Persist Security Info=True;User ID=SA;Data Source=EXAM;Initial Catalog=EXAM","","",-1)大家帮我看看到底是什么问题,为什么不能连到指定的数据库去
    我在我的电脑上建立了一个EXAM的数据库,可是初次接触ADO,怎么也连接不上去,大大帮帮忙
      

  3.   


    我也遇到了类似的问题,好象是联上去了,可查询的时候出错:
    我要在程序中用ado技术访问sql server200数据库,以下是我的代码,请高手指教:
    void CMyDlg::OnBnClickedButton1( )
    {
    _ConnectionPtr pConn=NULL;
    _RecordsetPtr  pSet=NULL;

    try
    {
    pConn.CreateInstance(__uuidof(Connection));
    pSet.CreateInstance(__uuidof(Recordset));
                      //DSN 数据源
    _bstr_t conn="DSN=bookshop;UID=bookshop;PWD=bookshop";
    pConn->Open(conn,"","",-1);
    AfxMessageBox("OK");
    _bstr_t sql="SELECT name FROM workers WHERE workerid='W001'";
    _RecordsetPtr  pSet;
    pSet=pConn->Execute(sql,NULL,adCmdText);
    if(!pSet->GetADOEOF())
    {
    AfxMessageBox("Connected!"); } pConn->Close();
    }
    catch(_com_error&e)
    {
    AfxMessageBox(e.ErrorMessage());
    AfxMessageBox("Wrong!");

    }

    }
    能够连接成功,接有消息"OK"发出,但又有错误"IDispath error #3127" 发出
    请指教.
    关于vc中的ado数据库操作,我还是新手,有很多东西要学,还请高手指教,
    例如
      1  _bstr_t类型到底是什么类型的数据,
      2  variant_t 又是什么类型,
      3  _RecordsetPtr 的Open函数的各个参数到底什么类型的数据,我在不同的参考书上      看到不 同的说法
      4 pSet->Open("SELECT * FROM workers", (const _variant_t&) pConn,adOpenDynamic,adLockOptimistic,adCmdText);
    其中pSet是_RecordsetPtr 类型的,第二个参数那样强制转换行不行啊,有些书说这样打开Recordset
    pSet->Open("SELECT * FROM workers", Conn->GetInterfacePt(),adOpenDynamic,adLockOptimistic,adCmdText);
    可在我的.net环境中_ConnectionPtr 没有这个成员函数,不知道是怎么回事.
      

  4.   

    Persist Security Info=True;去掉,然后把用户名和密码提到第二、三个参数。
      

  5.   

    vc知识库18有个用ADO编制SQLPlus程序,用它准没错
      

  6.   

    转贴一份别人的东西,也许对你有用。看看这个例子吧  http://www.codeproject.com/database/isqlado.asp  ---------------------------------------------------------------   m_pConnection.CreateInstance(_uuidof(Connection));  //初始化Connection指针         m_pRecordset.CreateInstance(_uuidof(Recordset));//初始化Recordset指针          try         {                 m_pConnection->Open("DSN=ADOTest","","",0);  //连接叫作ADOTest的ODBC数据源                 //注意:这是连接不需要用户ID或密码的open  函数                 //  否则形式为  ->Open("DSN=test;uid=sa;pwd=123;","","",0);                             //  执行SQL语句得到一个记录集把其指针赋值给m_pRecordset                 CString  strSql="select  *  from  middle";                 BSTR  bstrSQL  =  strSql.AllocSysString();                   m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);                   //adOpenDynamic:动态  adLockOptimistic乐观封锁法  adCmdText:文本查询语句                  while(!m_pRecordset->adoEOF)//遍历所有记录                 {                           //取纪录字段值方式之一                         _variant_t  TheValue;  //VARIANT数据类型                         TheValue  =  m_pRecordset->GetCollect("BIG_NAME");//得到字段BIG_NAME的值                         if(TheValue.vt!=VT_NULL)                                 m_List.AddString((char*)_bstr_t(TheValue));                         //将该值加入到列表控件中                                  //取纪录字段值方式之二                         //  _bstr_t  TheValue1=m_pRecordset->Fields->GetItem("BIG_NAME")->Value;                         //  CString  temp=TheValue1.copy();                         //  m_List.AddString(temp);                          //数据类型转换                         _variant_t  vUsername,vBirthday,vID,vOld;                         TRACE("id:%d,姓名:%s,年龄:%d,生日:%s\r\n",                         vID.lVal,(LPCTSTR)(_bstr_t)vUsername,vOld.lVal,(LPCTSTR)(_bstr_t)vBirthday);                           m_pRecordset->MoveNext();//转到下一条纪录                 }                 m_pRecordset->Close();                 m_pConnection->Close();         }
      

  7.   

    问题已经解决,是因为,我的连接字符串不正确,我的SQL SERVER2000安装的时候选择的是WIN NT验证模式。