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 ("存在");
}
else {
System.out.println ("不存在");
}
}
}

下面是 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,可以查找多種類型的表

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。