下面代码由什么作用?我用控制面板设置了一个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));
//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));
两个数据源比较一下就是多出了上述代码添加的一个记录项.
就是问上面多出的记录项有什么作用?
在别处看到的另外的添加数据源代码,测试了一下,
//测试在当前目录下添加一个名为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", 是系统数据源.
总之:用户数据源和系统数据源在注册表里的位置不一样.艾,可知道了.