在运行时将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。

  1. 如果您在使用ODBC的DSN通过dbExpress的TECHNOLOGIE工作,那么你必须下载并使用“for ODBC的Kylix /德尔福开源dbExpress驱动程序”,从http://open-dbexpress.sourceforge.net。在那里你可以找到连接的例子,列出DSN的函数。等
  2. 如果你有更简单的东西,那么你可以使用TADOConnection和MSDASQL OLEDB提供程序,它是OLEDB-> ODBC桥提供程序。 T
  3. 如果您需要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; 

我希望这会有所帮助。

可能是使用什么连接字符串的最佳资源是connectionstrings.com。为了在dbExpress中使用ODBC,您需要一个ODBC driver