低级问题:为什么需要数据源,直接打开数据库*.mdb可以吗
1)我是直接打开数据库 db.Open(szFile);完全可以操纵数据库,数据源的作用是什么,2)还有如果用数据源sourename 数据库dbname,想去连接数据源sourename,
如果不成功再创建数据源(动态创建数据源的代码已经有了),怎么判断连接成功否?

解决方案 »

  1.   

    1) 没用过CDatabase::Open();直接打开文件的方式,(ODBC)数据源是提供了一个通用的编程接口,允许程序与多种不同的数据库连接
    2) 
    // Embed a CDatabase object in your document class
    CDatabase m_dbCust;// Connect the object to a data source (no password)
    // the ODBC connection dialog box
    // will always remain hidden
    m_dbCust.Open( _T( "MYDATASOURCE" ), FALSE,FALSE, _T( "ODBC;UID=JOES" );
    怎么判断连接成功否?
    可以直接用CDatabase::IsOpen()的返回值
      

  2.   

    DAO就可以,如果是ODBC/ADO还是需要数据源的。
      

  3.   

    要数据源是为了能用统一的接口访问不同的数据库,要实现这个目的应用程序和数据库间就要有一个中介,ODBC就是这个中介,所以用数据源访问数据库必须先与ODBC建立一个链接。
    DAO不需数据源,但只能访问Microsoft Jet引擎的数据库。
      

  4.   

    No OBDC Connect SQL SERVER
    1.stdafx.h中加入
    #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 
    2。app文件的InitInstance中加入
    if(S_OK!=OleInitialize(NULL))
    {
    AfxMessageBox("初始化COM组件库错误");
    }
    下面就是数据库操作
    _ConnectionPtr pConn;
    _RecordsetPtr  pRs;
    CString strSQL;
    pConn.CreateInstance(__uuidof(Connection));
    pConn->CursorLocation=adUseClient;
    strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
    pConn->Open(_bstr_t(strSQL),"","",-1);pRs.CreateInstance(__uuidof(Recordset));
    pRs->CursorLocation=adUseClient;
    pRs->PutActiveConnection(pConn.GetInterfacePtr());pRs1.CreateInstance(__uuidof(Recordset));
    pRs1->CursorLocation=adUseClient;
    pRs1->PutActiveConnection(pConn.GetInterfacePtr());strSQL="select * from catalog order by cataid";
    pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);
      

  5.   

    一般不需要数据源,用JET驱动直接打开就可以。
    不过用Rds的时候就要用到。
      

  6.   

    和用ado连sql server之类的是一样的。不过连接串不同而已
      

  7.   

    用DAO+ISAM就是直接打开的...这是微软以前推崇的技术....现在微软已经不提倡这样用了...建议用ADO,也可以的....