以编程方式设置TSQLConnection属性

时间:2016-07-07 13:08:38

标签: delphi delphi-xe8

使用 TSQLConnection 组件,如果我将驱动程序属性设置为 DataSnap ,是否有办法在代码中手动设置该驱动程序的属性?

e.g。 CommunicationProtocol CommunicationIPVersion

任何帮助都将不胜感激。

谢谢,

2 个答案:

答案 0 :(得分:7)

嗯,SilverWarior描述的并不是那么简单。问题是这些属性是特定于驱动程序的,不能直接从TSQLConnection访问。好的,这是一种方式:

var
  dbxProps: TDBXDatasnapProperties;
begin
  Assert(SQLConnection1.DriverName = 'DataSnap', 'Driver must be DataSnap');
  dbxProps := SQLConnection1.ConnectionData.Properties as TDBXDatasnapProperties;
  dbxProps.CommunicationProtocol := 'tcp/ip';
  dbxProps.CommunicationIPVersion := 'IPv6';
end;

答案 1 :(得分:1)

您可以将TSQLConnection.Params属性用于此目的:

  

列出连接参数。

     

Params 是列出连接参数的TStrings对象。字符串列表中的每个条目都具有

形式
Name=Value
     

其中Name是参数的名称,Value是其值。如果使用命名连接配置(ConnectionName属性),则在设置ConnectName时,将从dbxconnections.ini文件加载每个参数的值。

     

在设计时,您可以通过双击Object Inspector 中的Params属性,使用字符串列表编辑器设置参数值。您设置的任何新值都会覆盖设置ConnectionName时加载的值,除非您在运行时使用LoadParamsFromIniFileLoadParamsOnConnect加载连接配置。

     

出现的特定参数取决于数据库服务器。当您设置DriverName属性时,Params属性被初始化为包含每个参数的字符串。所有服务器都需要一个特定参数Database。它的值取决于您使用的服务器。例如,对于InterBase,Database是.gdb文件的名称,而对于MySQL,它是由CREATE DATABASE命令分配的数据库名称。

例如:

SQLConnection1.DriverName := 'DataSnap';
SQLConnection1.Params.Values['CommunicationProtocol'] := 'tcp/ip';
SQLConnection1.Params.Values['CommunicationIPVersion'] := 'IPv6';`