FireDAC GetTableNames MySQL
FireDAC GetTableNames MySQL
我无法从连接参数中指定的数据库以外的数据库中获取 table 名称。
首先,我使用了 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=*');
那么,我应该如何从其他数据库中获取 table 名称?
我发现了,我的问题就是答案。我应该在 TFDPhysObjectScopes 中包含 osOther。
DM.FDConnection.GetTableNames(ADatabse, '', APattern, tables, [osMy, osOther], [tkTable], False);
我无法从连接参数中指定的数据库以外的数据库中获取 table 名称。
首先,我使用了 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=*');
那么,我应该如何从其他数据库中获取 table 名称?
我发现了,我的问题就是答案。我应该在 TFDPhysObjectScopes 中包含 osOther。
DM.FDConnection.GetTableNames(ADatabse, '', APattern, tables, [osMy, osOther], [tkTable], False);