JAVA判断数据表是否在数据库中存在的方法
今天白天遇到一个问题,要求判断一个已知表名的表是否在数据库存在的方法,这种问题还是挺让人郁闷了,先GG,后baidu,结果找到的方法要么只能适用于专用的数据库,要么就是没有考虑到X排他锁的问题。不过还好想到了SUN的API,在java.sql包下面有这样一个接口DatabaseMetaData可以一用,方法很简单获取数据库meta中的表中是否有你要的就好,而且只要是你的JDBC驱动支持就好,通用性很强,写了点DEMO代码给大家参考
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,可以查找多种类型的表
有问题基本上都是先GG后BAIDU 呵呵
对于数据库我的了解不多,能用就行了~
如果把c.getTables()的各个参数的含义写出来就更好了
呵呵,已经附上