Home > 语言编程 > JAVA判断数据表是否在数据库中存在的方法

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

今天白天遇到一个问题,要求判断一个已知表名的表是否在数据库存在的方法,这种问题还是挺让人郁闷了,先GG,后baidu,结果找到的方法要么只能适用于专用的数据库,要么就是没有考虑到X排他锁的问题。不过还好想到了SUN的API,在java.sql包下面有这样一个接口DatabaseMetaData可以一用,方法很简单获取数据库meta中的表中是否有你要的就好,而且只要是你的JDBC驱动支持就好,通用性很强,写了点DEMO代码给大家参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
 
//detec unknow tables by name
// TableName:tablename
public class Main {
  public static void main(String[] argv) throws Exception {
    Connection c = null;   //db connection
    DatabaseMetaData dbm = c.getMetaData();
    ResultSet rs = dbm.getTables(null, null, "tablename", null);
    if (rs.next()) {
      System.out.println("Exists");
    }
     else {
      System.out.println("Not Exist");
    }
  }
}

下面是getTables的函数原型
public ResultSet getTables(String catalog,String schemaPattern, String tableNamePattern,String[] types) throws SQLException
对应参数说明如下:
catalog ,不用说了,目录名,一般就是数据库的名称 test的数据库就是test,null的话会搜索所有表
schemaPattern,是匹配数据表的模式,null的话就不考虑schema了
tableNamePattern,数据表名称的匹配,我上面直接用的表名,只能匹配一张表,这里可以用正则实现多表匹配
types数组,是数据表的类型,比如Mysql常用的MyISAM和InnoDB,可以查找多种类型的表

Categories: 语言编程 Tags: ,
  1. April 29th, 2009 at 09:09 | #1

    有问题基本上都是先GG后BAIDU 呵呵
    对于数据库我的了解不多,能用就行了~

  2. April 30th, 2009 at 07:47 | #2

    如果把c.getTables()的各个参数的含义写出来就更好了

  3. April 30th, 2009 at 08:54 | #3

    呵呵,已经附上

  1. No trackbacks yet.