banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

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
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,可以查找多种类型的表

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。