【JDBC】利用Connection的Metadata取得一个数据库连接下的所有表
【核心语句】
DatabaseMetaData metaData = conn.getMetaData();
ResultSet tables = metaData.getTables(null, null, "EMP%", new String[]{"TABLE"});
第一句没啥花样,第二句中有四个参数,第一个是Catalog,第二个是schemaPattern,第三个是tablePattern,第四个就是类型,可以选VIEW和TABLE。
第二句代码中tablePattern如果设置为空,那么出来的表就太多了,至少对于我刚安装不久的Oracle11g来说是如此,于是我用EMP%限制了一下,于是只剩下以EMP开头的表。
schemaPattern应该也是一样的道理,Catalog不知道该怎么设置,留待日后探索吧!您要是知道请留言赐教。
【代码】
package com.hy.lab; import java.sql.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 此类用于找出Connection下的所有表 */ public class TablesFinder { //-- 以下为连接Oracle数据库的四大参数 private static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; private static final String USER = "luna"; private static final String PSWD = "1234"; public void printTables(){ Connection conn = null; try{ Class.forName(DRIVER); conn = DriverManager.getConnection(URL, USER, PSWD); List<String> ls=getTables(conn); Collections.sort(ls); ls.stream().forEach(table -> System.out.println(table)); } catch (Exception e) { e.printStackTrace(); } finally { try { conn.close(); } catch (Exception e) { e.printStackTrace(); } } } private List<String> getTables(Connection conn) throws Exception{ List<String> ls=new ArrayList<>(); DatabaseMetaData metaData = conn.getMetaData(); ResultSet tables = metaData.getTables(null, null, "EMP%", new String[]{"TABLE"}); while (tables.next()) { String tableName = tables.getString(3); ls.add(tableName); } return ls; } public static void main(String[] args){ TablesFinder tf=new TablesFinder(); tf.printTables(); } }
【运行结果】
EMP
EMPLOYEES
EMP_0322
EMP_30
EMP_FROM
EMP_FROM_10
EMP_FROM_10_317
EMP_FROM_11_0322
EMP_TEST
EMP_TO
EMP_TO_10
EMP_TO_10_0317
EMP_TO_10_0322
【参考资料】
https://blog.csdn.net/github_34793283/article/details/114109394
https://blog.csdn.net/successfulroof/article/details/83973595
END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2020-03-25 判断Java程序是否在jar中运行
2020-03-25 以jar包为容器的java程序访问一同打到jar包里的配置文件的方法
2020-03-25 设置logback的log文件地址为程序运行的当前目录
2020-03-25 【高中数学/导数】证明当x>1时,y=log_x_x+1为减函数,y=log_x+1_x为增函数
2018-03-25 【高中数学/函数/零点】寻找函数y=2^x-x-1的零点
2018-03-25 linux CentOS6.5 yum安装mysql 5.6(转载&删改)
2018-03-25 Error: Cannot find module 'express' 之 解决方案