下面代码由什么作用?我用控制面板设置了一个ODBC数据源,在注册表里查看好像没有下面的项//设置ODBC数据库引擎名称
//ODBC Data Sources为数据源名称
LPCTSTR strSourceName = "ODBC Data Sources";
LPCTSTR strDbType = "Microsoft Access Driver (*.mdb)";
HKEY hKey;
RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
             "SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources", 
             0,   
             KEY_WRITE, 
             &hKey);LPCTSTR strDbType="Microsoft Access Driver (*.mdb)";RegSetValueEx(hKey, 
              strSourceName, 
              0, 
              REG_SZ, 
             (CONST BYTE*)strDbType, 
              strlen(strDbType));

解决方案 »

  1.   

    代码用来往注册表里添加odbc数据源信息
      

  2.   

    现在问题是这样的,我建立了两个ODBC数据源,一个用控制面板的管理工具建立的,一个用代码建立的
    两个数据源比较一下就是多出了上述代码添加的一个记录项.
    就是问上面多出的记录项有什么作用?
      

  3.   

    不好意思,是我在Select的时候少写了一个列名,所以才导致了这些莫名其妙的错误,感谢大家的回答,都给分
      

  4.   

    虽然已经结贴了,还是来添几句:
    在别处看到的另外的添加数据源代码,测试了一下,
    //测试在当前目录下添加一个名为dbtest的数据源
    CDialog::OnInitDialog();
    char szDesc[223];
    int mlen;
    sprintf(szDesc,"DSN=%s? DBQ=%s? DEFAULTDIR=%s?? ","dbtest",".\\founddbtest.mdb",".\\");
    mlen = strlen(szDesc);
    for (int i=0; i<mlen; i++)
    {
    if (szDesc[i] == '?')
    szDesc[i] = '\0';
    }
    SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc);
    最近用代码和控制面板试验了下,可知道了,我找不到自己注册表里的变化原来是因为用户数据源和系统数据源在注册表里的位置不一样.我用控制面板添加的是用户数据源,不该在HKEY_LOCAL_MACHINE\SOFTWARE\ODBC找.
    这个测试段代码添加的数据源在HKEY_USERS\S-1-5-21-1960408961-1957994488-1343024091-1000\Sofetware\ODBC\ODBC.INI下找到的,我用控制面板添加的用户数据源都在这里,看来此代码的方式是添加用户数据源,
    本贴的代码添加的则是HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", 是系统数据源.
    总之:用户数据源和系统数据源在注册表里的位置不一样.艾,可知道了.