首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FireDAC GetTableNames MySQL

FireDAC GetTableNames MySQL
EN

Stack Overflow用户
提问于 2019-02-25 23:07:31
回答 1查看 585关注 0票数 0

我无法从连接的params中指定的数据库以外的数据库中获取表名。

首先,我使用了GetTableNames,它工作得很好,但是我从连接的参数中指定了相同的数据库。

代码语言:javascript
运行
复制
DM.FDConnection.GetTableNames(ADatabse, '', APattern, tables, [osMy], [tkTable], False);

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

代码语言:javascript
运行
复制
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;

但我可以得到所有数据库的名称:

代码语言:javascript
运行
复制
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;

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

代码语言:javascript
运行
复制
DM.FDConnection.Params.Add('MetaDefSchema=*');
DM.FDConnection.Params.Add('MetaDefCatalog=*');
DM.FDConnection.Params.Add('MetaCurSchema=*');
DM.FDConnection.Params.Add('MetaCurCatalog=*');

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-25 23:35:28

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

代码语言:javascript
运行
复制
DM.FDConnection.GetTableNames(ADatabse, '', APattern, tables, [osMy, osOther], [tkTable], False);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54869135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档