除了连接参数中指定的数据库外,我无法从其他数据库中获取表名。

首先,我使用GetTableNames并运行良好,但是我从连接的参数中指定了相同的数据库。

DM.FDConnection.GetTableNames(ADatabse, '', APattern, tables, [osMy], [tkTable], False);


但是当我尝试指定其他数据库时,我没有工作。然后,我尝试使用TFDMetaInfoQuery,但它也不起作用:

FDMetaInfoQuery := TFDMetaInfoQuery.Create(nil);
FDMetaInfoQuery.Connection := DM.FDConnection;
FDMetaInfoQuery.MetaInfoKind := mkTables;
FDMetaInfoQuery.CatalogName := 'databasename'
FDMetaInfoQuery.Open;

while not FDMetaInfoQuery.Eof do
begin
  Result := Result + sLineBreak + FDMetaInfoQuery.FieldByName('TABLE_NAME').AsString;
  FDMetaInfoQuery.Next;
end;


但是我可以获得所有数据库名称:

FDMetaInfoQuery := TFDMetaInfoQuery.Create(nil);
FDMetaInfoQuery.Connection := DM.FDConnection;
FDMetaInfoQuery.MetaInfoKind := mkCatalogs;
FDMetaInfoQuery.Open;

while not FDMetaInfoQuery.Eof do
begin
  Result := Result + sLineBreak + FDMetaInfoQuery.FieldByName('CATALOG_NAME').AsString;
  FDMetaInfoQuery.Next;
end;


我已经尝试在连接中指定这些参数,但是没有任何变化:

DM.FDConnection.Params.Add('MetaDefSchema=*');
DM.FDConnection.Params.Add('MetaDefCatalog=*');
DM.FDConnection.Params.Add('MetaCurSchema=*');
DM.FDConnection.Params.Add('MetaCurCatalog=*');


那么,如何从其他数据库中获取表名呢?

最佳答案

我发现,我的唯一问题就是答案..我应该在TFDPhysObjectScopes中包含osOther。

DM.FDConnection.GetTableNames(ADatabse, '', APattern, tables, [osMy, osOther], [tkTable], False);

关于mysql - FireDAC GetTableNames MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54869135/

10-10 05:43