在运行时将TSQLConnection连接到用户选择的DSN
问题描述:
我想使用dbExpress和TSQLConnection对象来允许我的应用程序的用户连接到他们的任何ODBC dsn并对其运行SQL查询。我有它,所以用户可以选择一个DSN(通过DSN我是指在控制面板 - 管理工具 - 数据源(ODBC)中列出的所有配置的数据源),但一旦他们选择了一个 我不是确定如何配置TSQLConnection对象。在运行时将TSQLConnection连接到用户选择的DSN
我想我需要设置:
SQLCon.connectionName
SQLCon.driverName
SQLCon.getDriverFunc
在一个给定的DSN的注册表设置我有一个 'DRIVER'条目指向一个DLL,但没有指示'getDriverFunc'值。
有没有人有任何建议或在运行时建立一个ODBC DSN的TSQLConnection(或任何其他delphi数据库连接)的例子?
感谢
答
我发现做到这一点的最好办法是使用TADOConnection,只需在连接字符串中的DSN。
答
- 如果您在使用ODBC的DSN通过dbExpress的TECHNOLOGIE工作,那么你必须下载并使用“for ODBC的Kylix /德尔福开源dbExpress驱动程序”,从http://open-dbexpress.sourceforge.net。在那里你可以找到连接的例子,列出DSN的函数。等
- 如果你有更简单的东西,那么你可以使用TADOConnection和MSDASQL OLEDB提供程序,它是OLEDB-> ODBC桥提供程序。 T
- 如果您需要Delphi的高级ODBC支持,那么您应该看看3D派对产品。
所以,决定你需要什么,然后我将能够为你提供一些样品。
答
虽然没有使用DBexpress,但如果您使用ADB,则ADO单元中会有一个预制方法。
我认为你可以使用,如果需要你可能会改变它返回的连接字符串的SOM部分。
该方法是ADODB.PromptDataSource;
答
这里如何做到这一点的TADOConnection:
这是ODBC提供商(系统DSN)的连接字符串:
Provider=MSDASQL;DSN=mySystemDSN;Uid=myUsername;Pwd=myPassword
,这里是演示展示了你可以如何使用它来连接到DSN命名为'SQLServerDSN',用户'sa'和pasword'pass':
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOConnection1.ConnectionString := 'Provider=MSDASQL;DSN='+
'SQLServerDSN;Uid=sa;Pwd=pass';
ADOConnection1.Connected := true;
end;
我希望这会有所帮助。