2016-07-07 1 views
0

?프로그래밍 세트를 TSQLConnection 속성

CommunicationProtocol 또는 CommunicationIPVersion.

도움을 주시면 감사하겠습니다.

감사합니다,

+0

디자인 타임에 오브젝트 인스펙터를 통해 변경 될 수있는 모든 속성은 또한 런타임에 변경 될 수 있습니다. – SilverWarior

+1

@ SilverWarior : 사실,하지만 OP의 q는 "여부"가 아니라 "방법"이었습니다. – MartynA

답변

6

글쎄, SilverWarior 설명으로 그 간단하지 않다. 문제는 해당 속성이 드라이버 관련 사항이며 TSQLConnection에서 직접 액세스 할 수 없다는 것입니다. OK, 여기 방법 :

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; 
+0

그게 전부 필요해, 정말 고마워! :) –

+1

'TSQLConnection.ConnectionData.Properties'를 직접 형변환하는 대신'TSQLConnection.Params' 속성을 사용해야합니다. –

+0

레미의 답변이 더 좋습니다. 당신은 DataSnap 만되는 드라이버에 대한 의존성을 소개하고 Remy 's는 모든 드라이버에서 작동합니다 (물론 그에 따라 매개 변수 이름을 조정합니다). 하향 투표하지 않음; 그냥 지적했다. –

1

당신은 그 목적을 위해 TSQLConnection.Params 속성을 사용할 수 있습니다 :

목록 연결 매개 변수.

Params은 연결 매개 변수를 나열하는 TStrings 개체입니다. 문자열 목록의 각 항목은 다음 형식을 갖습니다.

Name=Value 

여기서 Name은 매개 변수의 이름이고 Value는 값입니다. 명명 된 연결 구성 (ConnectionName 속성)을 사용하는 경우 ConnectName을 설정하면 각 매개 변수의 값이 dbxconnections.ini 파일에서로드됩니다.

디자인 타임에 Object Inspector의 Params 속성을 두 번 클릭하여 문자열 목록 편집기를 사용하여 매개 변수 값을 설정할 수 있습니다. LoadParamsFromIniFile 또는 LoadParamsOnConnect을 사용하여 런타임에 연결 구성을로드하지 않는 한 사용자가 설정 한 모든 새 값은 ConnectionName을 설정할 때로드 된 값보다 우선합니다.

표시되는 특정 매개 변수는 데이터베이스 서버에 따라 다릅니다. DriverName 속성을으로 설정하면 Params 속성이 각 매개 변수의 문자열을 포함하도록 초기화됩니다. 하나의 특정 매개 변수 Database은 모든 서버에 필요합니다. 이 값은 사용중인 서버에 따라 다릅니다. 예를 들어 InterBase의 경우 Database은 .gdb 파일의 이름이고, MySQL의 경우 CREATE DATABASE 명령으로 할당 된 데이터베이스 이름입니다. 예를 들어

:

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

IDE에서 'Driver'(적어도 한 번)를 설정하면 특정 서버에 대한 SQLConnection.Params가 채워지고 Params 省略 부호 (...) 버튼을 클릭하면 사용 가능한 매개 변수 이름과 유용한 정보를 제공하는 기본값. –

+1

@KenWhite : 실제로 [documentation] (http://docwiki.embarcadero.com/Libraries/en/Data.SqlExpr.TSQLConnection.Params)에 명시되어 있습니다. 내 대답에 견적을 추가했습니다. –