HRESULT hr;
CDBPropSet dbinit(DBPROPSET_DBINIT);
dbinit.AddProperty(DBPROP_AUTH_INTEGRATED, "SSPI");
dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO,
   false);
dbinit.AddProperty(DBPROP_INIT_CATALOG,  "Employees");
dbinit.AddProperty(DBPROP_INIT_DATASOURCE, "XIAOYAO");
  // 开始连接
hr = m_Connect.Open("SQLOLEDB.1", &dbinit);
-> if (FAILED(hr)) //这里总是hr创建错误就直接返回了,不会到会话的创建那步 return;
  // 建立会话
hr = m_Session.Open(m_Connect);
if (FAILED(hr)) 
return;初学,所以不知道是哪里的问题,那些数据源是按照教程上一步步设置好的,不知道是不是我设置数据源的问题,谢谢
麻烦也不设置数据源的过程说的详细一点,step by step ,再次感谢

解决方案 »

  1.   

    抄来一段,参考一下吧: CfpCy18 m_CfpCy18;
     CfpMach7 m_CfpMach7; CDataSource  m_DB;
     bool m_bDBExist;
     bool OpenDB(CDataSource& db);
     开启数据库bool CMyOleDlg::OpenDB(CDataSource& db)
    {
     HRESULT hr;
     CDBPropSet dbinit(DBPROPSET_DBINIT);
     dbinit.AddProperty(DBPROP_AUTH_CACHE_AUTHINFO, true);
     dbinit.AddProperty(DBPROP_AUTH_ENCRYPT_PASSWORD, false);
     dbinit.AddProperty(DBPROP_AUTH_MASK_PASSWORD, false);
     dbinit.AddProperty(DBPROP_AUTH_PASSWORD, OLESTR(""));
     dbinit.AddProperty(DBPROP_AUTH_USERID, OLESTR("Admin"));
     dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR("db1.mdb"));
     dbinit.AddProperty(DBPROP_INIT_MODE, (long)19);
     dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
     dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, OLESTR(""));
     dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);
     hr = db.Open(_T("Microsoft.Jet.OLEDB.4.0"), &dbinit); if (FAILED(hr))
      {
      AfxMessageBox(_T("Couldn't open this DB!"));
      return false;
      }
     return true;
    }
      

  2.   

    对SQL Server数据库连接,连接对象的属性设置应该类似于下面几个:Provider=SQLOLEDB.1
    Integrated Security=SSPI      从windows用户登录
    Persist Security Info=False
    Initial Catalog=DatabaseName  正确的数据库名
    Data Source=SERVERName        正确的服务器名如果这几项Property都设置正确了,感觉应该能连上去了.但不知道 VC 中这几项都是用的哪些属性名.
      

  3.   

    SQL server中的数据库文件名是不要去管它的,因为它是由 DBMS 管的.只要把服务器的各项设置告诉 VC,就应该连得上去.
      

  4.   

    真的连上去了,vc中的这几项属性名msdn里都有,感谢qianjin036a同志