FireDAC TFDConnection.GetTableNames无法使用受信任的身份验证

时间:2015-07-08 09:49:16

标签: delphi authentication firebird firedac trusted

我将Firebird数据库与FireDAC连接(从FIBPlus迁移并使用XE8更新1)。我使用受信任的身份验证(OSAutenth = True)。我需要读取数据库中的表列表。我使用TFDConnection.GetTableNames,它适用于标准的autenthication(用户名+密码),但我无法使用受信任的身份验证使其工作。也许我做错了什么,或者我用错误的方法来获取那种信息。这就是我正在做的事情:

var
  oDef : IFDStanConnectionDef;
  oPars: TFDPhysFBConnectionDefParams;
begin
  oDef:=FDManager.ConnectionDefs.AddConnectionDef;
  oDef.Name:='MyFirebird';

  oPars:=TFDPhysFBConnectionDefParams(oDef.Params);
  oPars.DriverID:='FB';
  oPars.Protocol:=ipTCPIP;
  oPars.Server:=edServer.Text;
  oPars.SQLDialect:=3;
  oPars.Database:=edDataBase.Text;
  oPars.OSAuthent:=(edPassword.Text='');
  oPars.UserName:='SYSDBA';
  oPars.Password:=edPassword.Text;
  oPars.RoleName:=edRole.Text;
  oPars.OpenMode:=omOpen;

  FDPhysFBDriverLink1.Embedded:=False;
  FDPhysFBDriverLink1.VendorLib:='c:\MyProgram\fbclient.dll';

  FDConnection1.ConnectionDefName:='MyFirebird';
  FDConnection1.Connected:=TRUE;

  FDConnection1.GetTableNames('','','',Memo1.Lines,[osMy],[tkTable]);       '<--- doesn't works with os authentication

  FDQuery1.SQL.Text:='select * from MYTABLE';
  FDQuery1.Active:=TRUE;                                              '<--- works fine in both kind of authentication

我要替换的FIBPlus TpFIBDatabase.GetTableNames可以正常使用这两种身份验证。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

按如下方式更改命令:

FDConnection1.GetTableNames('','','',Memo1.Lines,[osMy],[tkTable],true);