我们在VC中通过odbc访问数据库的时候,我们总是在建好数据库后,再配置windows控制面板中的odbc才能使VC访问该数据库,现在我想在应用程序中直接实现此连接过程,也就是在应用程序初始化的时候,自动实现此过程,而先手动配置,我想应该会涉及到注册表的问题,可惜,我也是VC刚入门,请高手指点如何实现此过程,(最好附上源代码)并注明在哪里实现比较好一些.

解决方案 »

  1.   

    vc可以通过一个函数来自动实现access数据库的ODBC注册,而不通过到控制面板的设置
    SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",
      "DSN=tablename\0DBQ=c:\\Database\\table.mdb\0DEFAULTDIR=c:\\Database\0\0");
    函数成功后DSN就是平时我们在ODBC中设的数据源名称。
    //同时,此函数需要头文件#include <odbcinst.h>支持
    然后调用方式为:
    CDatabase db;
    db.Open(_T("tablename"));
    CRecordset set(&db);
    //table1是table文件中的一张表
    set.Open(CRecordset::forwardOnly,"select * from table1");
    //现在就可以用记录集set操作了
      

  2.   

    jiey(xiaoer) ,你好,非常感谢,但是这些代码放在哪个函数中比较合适呢
      

  3.   

    放在对话框的OnInitDialog函数里
      

  4.   

    ODBC 也可以不注册直接使用,如下返回一个连接字符串就可以不注册使用ODBC了。CString CXXXRecordset::GetDefaultConnect()
    {
    CString text;
             CString datapath=XXX   //你的数据文件目录 text.Format("ODBC;DRIVER=Microsoft Access Driver (*.mdb);UID=admin;PWD=;UserCommitSync=Yes;Threads=8;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL=MS Access;DriverId=25;DefaultDir=%s\\;DBQ=diary.dat;",datapath); return _T(text);
    }