谁能提出一种检测数据库是否为空的 Java 数据库的好方法(需要至少支持 Microsoft SQL Server、Derby 和 Oracle)?
我所说的空是指如果数据库是使用新的创建数据库语句全新创建的状态,尽管如果涵盖 99% 的情况,检查不需要 100% 完美。
我的第一个想法是做这样的事情......
tables = metadata.getTables(null, null, null, null);
Boolean isEmpty = !tables.next();
return isEmpty;
...但不幸的是,这给了我一堆底层系统表(至少在 Microsoft SQL Server 中)。
最佳答案
有一些跨数据库的 SQL-92 模式查询标准——这当然因供应商而异
SELECT COUNT(*) FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_TYPE] = <tabletype>
对这些的支持因供应商而异,表格 View 的列内容也是如此。在此处找到的信息模式文档的 SQL 实现:
http://msdn.microsoft.com/en-us/library/aa933204(SQL.80).aspx
更具体地说,在 SQL Server 中,sysobjects 元数据早于 SQL92 标准倡议。
SELECT COUNT(*) FROM [sysobjects] WHERE [type] = 'U'
上面的查询返回数据库中用户表的计数。有关 sysobjects 表的更多信息:
http://msdn.microsoft.com/en-us/library/aa260447(SQL.80).aspx
关于java - 我如何从 Java 中一般检测数据库是否为 'empty',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/119011/