IBX TIBDatabase.GetTableNames不显示新创建的表

Fab*_*ale 3 delphi firebird

如果我在Firebird数据库中创建一个新表,然后我调用:

TIBDatabase.GetTableNames,新创建的表没有得到颂扬:我首先发出:

IBDatabase1.Connected := False;
IBDatabase1.Connected := True;
Run Code Online (Sandbox Code Playgroud)

然后我可以调用TIBDatabase.GetTableNames并枚举新创建的表.

以下函数使用TIBDatabase.GetTableNames来确定是否存在作为参数传递的给定表名

function TableExists(const aTableName: String): Boolean;
var
  ListOfExistingTables: TStringList;
begin
  Result:= False;
  ListOfExistingTables:= TStringList.Create;
  try
    IBDatabase1.GetTableNames(ListOfExistingTables);
    Result:= (ListOfExistingTables.IndexOf(aTableName) > - 1);
  finally
    ListOfExistingTables.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

Mic*_*ael 5

在Firebird中甚至元数据 - 更改在事务中被隔离.因此,您必须提交已用于创建表的事务.也许您必须提交IBX使用的事务来读取表名.