开发者社区> 问答> 正文

我如何一般性地检测数据库是否从Java中“清空”

谁能建议一种检测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中)。

展开
收起
心有灵_夕 2019-12-29 00:04:42 1012 0
1 条回答
写回答
取消 提交回答
  • 我不知道这是否是一个完整的解决方案...但是您可以通过读取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;
    
    

    在实践中……我想您可能需要付出很大的努力才能获得真正可靠,真正通用的解决方案。

    2019-12-29 00:05:03
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载