环境:firebird2.5,zeos7.0,lazarus1.1,fpc2.6.1。
问题描述:
用程序创建一张数据库表,例如tb1,使用语句 drop table tb1 删除tb1表。
不退出程序,在程序中使用语句 Conn.GetTableNames('', sTblList); 获取所有表的名称,已经删除的tb1表,仍然显示在 sTblList 列表中。
问题解决:
在使用 Conn.GetTableNames('', sTblList); 语句之前,清除metadata缓存数据:
ZConn.DbcConnection.GetMetadata.ClearCache; // 该语句清除元数据缓存
ZConn.GetTableNames('', sTblList);
(2014.2.10)