通過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.      下面就是一段獲取數據庫元數據的示例代碼:

[java] view plaincopy
  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, nullnew 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. }  
發佈了14 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章