我正在尝试以编程方式为 Microsoft Paradox 驱动程序 (ODBC) 添加系统 DSN,但我找不到任何关于需要传递 SQLConfigDataSource 的属性参数的键的文档。我可以成功地添加一个 MS Access 系统 DSN,但那是因为那里有许多包含密钥的示例(例如 DBQ)。我的代码(Delphi)不起作用,如下所示。
我尝试了很多不同的密钥,但都没有成功。例如,我检查了注册表中 HKEY_LOCAL_MACHINE\Software\Wow6432Node\ODBC\ODBC.INI(32 位 ODBC)下出现的名称/值对,但这并没有解决问题。
有谁知道我需要在 SQLConfigDataSource 的 lpszAttributes 参数中传递哪些键才能以编程方式创建 Paradox 系统 DSN?
function SQLConfigDataSource (
hwndParent: SQLHWnd;
fRequest: WORD;
lpszDriver: PChar;
lpszAttributes: PChar
): SQLBOOL; {$IFDEF MSWINDOWS} stdcall {$ELSE} cdecl {$ENDIF};
external 'odbccp32.dll' name 'SQLConfigDataSourceW';
procedure TForm1.Button1Click(Sender: TObject);
var
Attributes: string;
RetVal: Boolean;
begin
Attributes := 'DSN=' + 'Paradox Data#0;
Attributes := Attributes + 'DESCRIPTION=Paradox DSN for sample data'#0;
Attributes := Attributes + 'DEFAULTDIR=c:\Users\Public\Documents\RAD Studio\12.0\Samples\Data'#0#0;
RetVal := SqlConfigDataSource(0, ODBC_ADD_SYS_DSN, 'Microsoft Paradox Driver (*.db)', PChar(Attributes));
if not RetVal then
ShowMessage('Could not add DSN');
end;
我最初在这里报告了答案,但是 warrenp 和 crefird 都建议我回答我自己的问题(即使归功于 crefird)。你会在下面找到我的答案。