打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
通过JDBC的DatabaseMetaData获取数据库元数据

1.      在项目src目录下创建jdbc.properties文件

内容:

dbName=JMJL

className=oracle.jdbc.driver.OracleDriver

url=jdbc:oracle:thin:@168.9.202.49:1521:test

user=TEST

password=TEST


2.      写一个jdbc处理通用的简单处理工具类JdbcByPropertiesUtil 

参照《JDBC获取连接、关闭连接的简单工具类2》,

地址:http://blog.csdn.net/hu_shengyang/article/details/7861187


3.      下面就是一段获取数据库元数据的示例代码:

  1. package com.adam.test.entity;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DatabaseMetaData;  
  5. import java.sql.ResultSet;  
  6. import java.sql.SQLException;  
  7. import java.util.ArrayList;  
  8. import java.util.HashMap;  
  9. import java.util.List;  
  10. import java.util.Map;  
  11. import java.util.Properties;  
  12.   
  13. import com.adam.dev.utils.JdbcByPropertiesUtil;  
  14.   
  15. public class TestDatabaseMetaData {  
  16.     private JdbcByPropertiesUtil jbpu = JdbcByPropertiesUtil.getInstance();  
  17.       
  18.     public JdbcByPropertiesUtil getJbpu() {  
  19.         return jbpu;  
  20.     }  
  21.       
  22.     public void setJbpu(JdbcByPropertiesUtil jbpu){  
  23.         this.jbpu = jbpu;  
  24.     }  
  25.       
  26.     public Properties getProperties(){  
  27.         Properties pros = JdbcByPropertiesUtil.readPropertiesFile();  
  28.         return pros;  
  29.     }  
  30.   
  31.     /** 
  32.      * 读取配置文件jdbc.properties中的数据库名称 
  33.      * @return 
  34.      * @throws Exception 
  35.      */  
  36.     public String getDataSourceName()throws Exception{  
  37.         Properties pros = this.getProperties();  
  38.         String dbName = pros.get("dbName").toString();  
  39.         return dbName;  
  40.     }  
  41.       
  42.     /** 
  43.      * 获取数据库中的表名称与视图名称 
  44.      * @return 
  45.      */  
  46.     public List getTablesAndViews()throws Exception{  
  47.         Connection conn = jbpu.getConnection();  
  48.         ResultSet rs = null;  
  49.         List list = new ArrayList();  
  50.         try {  
  51.             Properties pros = this.getProperties();  
  52.             String schema = pros.get("user").toString();  
  53.             DatabaseMetaData metaData = conn.getMetaData();  
  54.             rs = metaData.getTables(null, schema, null, new String[]{"TABLE","VIEW"});  
  55.             while(rs.next()){  
  56.                 String tableName = rs.getString("TABLE_NAME");  
  57.                 list.add(tableName);  
  58.             }  
  59.         } catch (SQLException e) {  
  60.             e.printStackTrace();  
  61.         } finally{  
  62.             jbpu.close(rs, null, conn);  
  63.         }  
  64.         return list;  
  65.     }  
  66.       
  67.     /** 
  68.      * 利用表名和数据库用户名查询出该表对应的字段类型 
  69.      * @param tableName 表名 
  70.      * @return 
  71.      * @throws Exception 
  72.      */  
  73.     public String generateBean()throws Exception{  
  74.         Connection conn = jbpu.getConnection();  
  75.         ResultSet rs = null;  
  76.         String strJavaBean = "";  
  77.         String tableName = this.getDataSourceName();  
  78.         try{  
  79.             Properties pros = this.getProperties();  
  80.             String schema = pros.get("user").toString();  
  81.             DatabaseMetaData metaData = conn.getMetaData();  
  82.             rs = metaData.getColumns(null, schema, tableName, null);  
  83.             Map map = new HashMap();  
  84.             while(rs.next()){  
  85.                 String columnName = rs.getString("COLUMN_NAME");//列名  
  86.                 String dataType  = rs.getString("DATA_TYPE");//字段数据类型(对应java.sql.Types中的常量)  
  87.                 String typeName = rs.getString("TYPE_NAME");//字段类型名称(例如:VACHAR2)  
  88.                 map.put(columnName, dataType+":"+typeName);  
  89.             }  
  90.               
  91.             // 其它生成javaBean的相关操作  
  92.               
  93.         }catch(Exception e){  
  94.             e.printStackTrace();  
  95.         }finally{  
  96.             jbpu.close(rs, null, conn);  
  97.         }  
  98.         return strJavaBean;  
  99.     }  
  100.       
  101. }  

这只是一些简单常用的jdbc元数据的获取方式,如果需要更加深入请参考java api。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JDBC的那点事之DatabaseMetaData之获取表的所有列名
Oracle通过DatabaseMetaData从Oracle中获取字段的注释
jdbc元数据入门-1(DatabaseMetaData)
用JAVA从数据库中读出字段及内容
请教JDBC怎么连接ORACLE数据库
JDBC板块精华整理20051226
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服