2015-07-08 8 views
2

Я подключаю свою базу данных Firebird с помощью FireDAC (переход из FIBPlus и использование обновления XE8 1). Я использую доверенную аутентификацию (OSAutenth = True). Мне нужно прочитать список таблиц в базе данных. Я использую TFDConnection.GetTableNames, и он хорошо работает со стандартным авторизацией (имя пользователя + пароль), но я не могу заставить его работать, используя надежную аутентификацию. Возможно, я делаю что-то не так, или я использую неправильный метод, чтобы получить такую ​​информацию. Это то, что я делаю:FireDAC TFDConnection.GetTableNames не работает на Firebird с надежной аутентификацией

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, что я собираюсь заменить штраф как с видом авторизаций работ.

Любая идея?

+0

Я ищу в FIBPlus кода, и это делает только простой запрос ** RDB $ ОТНОШЕНИЙ ** таблица, чтобы получить такого рода данных. На данный момент я мог бы решить так же. –

+0

Из http://docwiki.embarcadero.com/RADStudio/XE8/en/Connect_to_InterBase_%28FireDAC%29, 'OsAutent' работает только для' 'DriverID = IB' и должен быть' oPars.Add ('OSAuthent = Yes «);'. –

+0

@ ValMarinov Я использую Firebird, а не IB. From (http://docwiki.embarcadero.com/RADStudio/XE8/en/Connect_to_Firebird_(FireDAC)) OsAuthent доступен, и кажется, что он работает (я использую его для чтения данных записи в соединение). TFDConnection.GetTableNames работает неправильно. –

ответ

0

Изменить команду следующим образом:

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

 Смежные вопросы

  • Нет связанных вопросов^_^