谁能建议一种检测Java是否为空的好方法(需要至少支持Microsoft SQL Server,Derby和Oracle)?
空是指在状态下使用新的create database语句重新创建数据库,但是如果覆盖99%的情况,则检查不一定是100%完美的。
我的第一个念头是做这样的事情...
tables = metadata.getTables(null, null, null, null);
Boolean isEmpty = !tables.next();
return isEmpty;
...但是不幸的是,这给了我很多基础系统表(至少在Microsoft SQL Server中)。
我不知道这是否是一个完整的解决方案...但是您可以通过读取getTables返回的ResultSet的table_type列来确定表是否为系统表:
int nonSystemTableCount = 0;
tables = metadata.getTables(null, null, null, null);
while( tables.next () ) {
if( !"SYSTEM TABLE".equals( tables.getString( "table_type" ) ) ) {
nonSystemTableCount++;
}
}
boolean isEmpty = nonSystemTableCount == 0;
return isEmpty;
在实践中……我想您可能需要付出很大的努力才能获得真正可靠,真正通用的解决方案。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。