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

时间:2011-10-31 07:58:14

标签: delphi firebird

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

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

IBDatabase1.Connected := False;
IBDatabase1.Connected := True;

然后我可以调用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;

1 个答案:

答案 0 :(得分:5)

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