[SQL,Java]判断某一个已知表名的表是否在数据库中存在的方法

转载 2012年03月28日 13:45:25

 

用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
}

今天碰到个问题:java和sql如何判断数据库表是否存在。要判断数据库中表是否存在,就搜寻了一下java和sql如何判断数据库表是否存在的方法

1.sql语句判断数据库表是否存在:

sql:select * from user_all_tables where table_name='tableName'

如果结果为空则表示不存在,如何结果不为空则表示存在;

2.java如何判断数据库表是否存在

方法一:

可以利用上面的sql,执行获取结果,相应的java代码如下:

String helperName= delegator.getGroupHelperName("com.asiainfo");
SQLProcessor sqlProcessor= new SQLProcessor(helperName);

String sql = "select * from user_all_tables where table_name='"+table+"'";

ResultSet rsTables =sqlProcessor.executeQuery(sql);
if(rsTables.next()){
Debug.logWarning("table:"+table+" exists", module);
}else{
Debug.logWarning("table:"+table+" does not exist", module);
}

方法二:

DatabaseMetaData meta = m_sqlCon.getMetaData();

ResultSet rsTables = meta.getTables(null , null, “YourTableName”, null);

if(rsTables.next()){

System.out.println("The Table exsits.");

}else{

System.out.println("The Table not exsits.");

}

注意,这里的参数很重要,如何写不对会导致结果不正确。

如果schema参数为null的话,那么它会查询整个数据库中的表有可能会冲突的:

getTables(String catalog,String schemaPattern,String tableNamePattern,String[] types)

参数: catalog:目录名称,一般都为空.

参数:schema:数据库名,对于oracle来说就用户名

参数:tablename:表名称

参数:type :表的类型(TABLE | VIEW)

注意:在使用过程中,参数名称必须使用大写的。

链接地址:http://x-spirit.spaces.live.com/blog/cns!CC0B04AE126337C0!217.entry

                 http://blog.sina.com.cn/s/blog_573a052b0100g8k7.html

 

Java代码判断数据库中某张表是否存在

最近在开发一个同步数据的统计任务的时候遇到一个问题:要在Java代码中判断数据库中某张表是否存在,查资料后,总结了以下两种方法: 1、使用JdbcTemplate bean public boole...
  • lmb55
  • lmb55
  • 2017年02月02日 20:33
  • 3739

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

方法1、java.sql.Connection con = getYourConnection();    ResultSet rs  = con.getMetaData().getTables(nu...
  • yuansicau
  • yuansicau
  • 2007年09月05日 09:36
  • 5257

Mysql+java后台判断数据库表是否存在

问题背景:今日,由于项目中涉及到数据量过大,按时间分表存储的问题。因此,在进行数据交互时,需要判断数据库中是否含有该表: /** * * 加载数据 * 前端界面简...
  • sinat_28690417
  • sinat_28690417
  • 2016年11月27日 23:40
  • 1916

如何判断数据中某张表是否存在

刚刚被一个比较麻烦的问题所困扰。这个问题就是如何判断数据中某张表是否存在,如果不存在则创建它。 恩,我先用了最笨的方法,就是写个select从表中读数据,捕获异常的同时就知道了改表没有创建。 ...
  • believejava
  • believejava
  • 2014年08月15日 17:05
  • 8663

mysql查看表存不存在

 mysql查看表存不存在
  • zelda002
  • zelda002
  • 2014年08月20日 18:24
  • 1392

mysql数据库中的表不存在,可以查看的问题

mysql数据库中的表不存在,可以查看的问题0、起因先说说起因吧,我在使用super-diamond的时候发现创建项目的时候不成功,到后台查看日志之后发现是Table 'edu_diamond.con...
  • Reminisce_man
  • Reminisce_man
  • 2017年08月12日 19:45
  • 609

【转载】sql 如何判断一个表是否存在

1、在生成临时表之后,确认是否已经删除 --Method 1 DECLARE @exists int SELECT @exists = 1 FROM INFORMATION_SCHEMA.t...
  • hubaichun
  • hubaichun
  • 2016年05月25日 16:55
  • 568

如何判断数据库中是否存在一个数据表

在使用Java连接数据库的进行查询的时候,如果数据表不存在,通常会产生一个exception。这里提供一个通用的方法来检测数据表是否存在。...
  • autofei
  • autofei
  • 2010年07月13日 05:19
  • 2856

JAVA判断数据表是否在数据库中存在的方法

今天白天遇到一个问题,要求判断一个已知表名的表是否在数据库存在的方法,这种问题还是挺让人郁闷了,先GG,后baidu,结果找到的方法要么只能适用于专用的数据库,要么就是没有考虑到X排他锁的问题。不过还...
  • yctccg
  • yctccg
  • 2016年08月16日 10:39
  • 506

JDBC 如何判断一张表是否存在

今天
  • u013025479
  • u013025479
  • 2014年04月09日 16:12
  • 3996
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[SQL,Java]判断某一个已知表名的表是否在数据库中存在的方法
举报原因:
原因补充:

(最多只允许输入30个字)