【发布时间】:2013-10-15 19:08:38
【问题描述】:
我正在尝试以编程方式为 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)。你会在下面找到我的答案。
【问题讨论】:
-
感谢您的建议。我已经查看并尝试使用它们出现在那里的名称,但还没有运气。但我认为你走在了正确的轨道上,我会再强调一下。
-
cfird!就是这样。请将您的建议作为答案发布,我会将其标记为正确。我将编辑我的问题以解释我的发现。
-
我认为您有理由回答自己的问题,因为结果会更具可读性。真实的答案比链接更好
-
我同意@WarrenP