zoukankan      html  css  js  c++  java
  • 用Java语句判断数据库表是否存在

    用Java语句判断数据库表是否存在


        public boolean HasTable(String name) {
            //判断某一个表是否存在
            boolean result = false;
            try {
                DatabaseMetaData meta = sqlConn.getMetaData();
                ResultSet set = meta.getTables (null, null, name, null);
                while (set.next()) {
                    result = true;
                }
            } catch (Exception eHasTable) {
                System.err.println(eHasTable);
                eHasTable.printStackTrace ();
            }
            return result;
        }

     
     
     
    刚刚被一个比较麻烦的问题所困扰。这个问题就是如何判断数据中某张表是否存在,如果不存在则创建它。

    恩,我先用了最笨的方法,就是写个select从表中读数据,捕获异常的同时就知道了改表没有创建。

    此法不通,因为这个时候的异常似乎被认定为了系统错误,于是后面创建表的代码被忽略了。

    大部分人的做法类似于select system.table where tabblename='***',反正我曾经用类似的句子查询过DB2,是成功的。

    但是,我现在面对的不是DB2,而是7个不同的数据库,基本上常用的都包括了。是不是每类数据库都有上面的查询语句呢?是否查询语句相似呢?于是我挑了hsqldb,也是当前的默认数据库,来寻找解决办法。

    很遗憾,我没有找到类似前面的句子。正当我打算放弃的时候发现了下面的代码,这段代码是我从一个国外的论坛中找到的,尽管我不知道它是不是万能钥匙,但是他这次对我而言确成了万能的:

    java.sql.Connection con = getYourConnection();
       
    ResultSet rs  = con.getMetaData().getTables(null, null,  "yourTable", null );
    if (rs.next())  {
    //yourTable exist
    }else  {
    //yourTable not exist
    }

    --
    X-Spirit
  • 相关阅读:
    [转贴]USB簡介
    [网游计划第六、七天]压力好大,坚持很难
    [备忘] 字符串倒序函数strrev
    我的网游计划:ACM 30天 60题
    [网游计划第一天]:不怎么顺利的开始
    程序员必须要有的自信
    转:squid做反向代理时,要注意的安全设置
    Linux DHCP Server 配置给FIT AP 使用的option
    jdk配置
    nod32升级
  • 原文地址:https://www.cnblogs.com/kentyshang/p/829625.html
Copyright © 2011-2022 走看看