以编程方式设置TSQLConnection属性

问题描述 投票:0回答:2

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

例如CommunicationProtocol或CommunicationIPVersion。

任何帮助,将不胜感激。

谢谢,

delphi delphi-xe8
2个回答
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
投票

您可以将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';`
© www.soinside.com 2019 - 2024. All rights reserved.