java获得数据库信息常用API(DatabaseMetaData)示例

本文通过一个Java应用实例,展示了如何利用DatabaseMetaData API获取数据库的URL、用户名、只读状态、产品名、产品版本等信息,以及如何获取用户下的所有表、视图、所有方案、表或视图的列信息、索引信息、主键信息和外键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近要做一个数据字典的工具,看了一下DatabaseMetaData的使用,做个备忘示例!

Java代码 复制代码
  1. package com.database.manager;   
  2.   
  3. import java.sql.Connection;   
  4. import java.sql.DatabaseMetaData;   
  5. import java.sql.DriverManager;   
  6. import java.sql.ResultSet;   
  7. import java.sql.SQLException;   
  8.   
  9. /**  
  10.  * @author daoger  
  11.  *   
  12.  * 2009-9-24  
  13.  */  
  14. public class DatabaseMetaDateApplication   
  15. {   
  16.     private DatabaseMetaData dbMetaData = null;   
  17.   
  18.     private Connection con = null;   
  19.   
  20.     private void getDatabaseMetaData()   
  21.     {   
  22.         try  
  23.         {   
  24.             if (dbMetaData == null)   
  25.             {   
  26.                 Class.forName("oracle.jdbc.driver.OracleDriver");   
  27.                 String url = "jdbc:oracle:thin:@192.168.0.2:1521:×××";   
  28.                 String user = "×××";   
  29.                 String password = "×××";   
  30.                 con = DriverManager.getConnection(url, user, password);   
  31.                 dbMetaData = con.getMetaData();   
  32.             }   
  33.         } catch (ClassNotFoundException e)   
  34.         {   
  35.             // TODO: handle ClassNotFoundException   
  36.             e.printStackTrace();   
  37.         } catch (SQLException e)   
  38.         {   
  39.             // TODO: handle SQLException   
  40.             e.printStackTrace();   
  41.         }   
  42.     }   
  43.   
  44.     public void colseCon()   
  45.     {   
  46.         try  
  47.         {   
  48.             if (con != null)   
  49.             {   
  50.                 con.close();   
  51.             }   
  52.         } catch (SQLException e)   
  53.         {   
  54.             // TODO: handle SQLException   
  55.             e.printStackTrace();   
  56.         }   
  57.     }   
  58.   
  59.     /**  
  60.      * 获得数据库的一些相关信息  
  61.      */  
  62.     public void getDataBaseInformations()   
  63.     {   
  64.         try  
  65.         {   
  66.             System.out.println("URL:" + dbMetaData.getURL() + ";");   
  67.             System.out.println("UserName:" + dbMetaData.getUserName() + ";");   
  68.             System.out.println("isReadOnly:" + dbMetaData.isReadOnly() + ";");   
  69.             System.out.println("DatabaseProductName:" + dbMetaData.getDatabaseProductName() + ";");   
  70.             System.out.println("DatabaseProductVersion:" + dbMetaData.getDatabaseProductVersion() + ";");   
  71.             System.out.println("DriverName:" + dbMetaData.getDriverName() + ";");   
  72.             System.out.println("DriverVersion:" + dbMetaData.getDriverVersion());   
  73.         } catch (SQLException e)   
  74.         {   
  75.             // TODO: handle SQLException   
  76.             e.printStackTrace();   
  77.         }   
  78.     }   
  79.   
  80.     /**  
  81.      * 获得该用户下面的所有表  
  82.      */  
  83.     public void getAllTableList(String schemaName)   
  84.     {   
  85.         try  
  86.         {   
  87.             // table type. Typical types are "TABLE", "VIEW", "SYSTEM   
  88.             // TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS",   
  89.             // "SYNONYM".   
  90.             String[] types =   
  91.             { "TABLE" };   
  92.             ResultSet rs = dbMetaData.getTables(null, schemaName, "%",
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值