国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java 查詢oracle數據庫所有表DatabaseMetaData的用法(詳解)

2019-11-26 13:34:12
字體:
來源:轉載
供稿:網友

一 . 得到這個對象的實例

Connection con ;con = DriverManager.getConnection(url,userName,password);DatabaseMetaData dbmd = con.getMetaData();

二. 方法getTables的用法

原型:

ResultSet DatabaseMetaData.getTables(String catalog,String schema,String tableName,String []type)

此方法可返回結果集合ResultSet ,結果集中有5列, 超出會報越界異常

功能描述:得到指定參數的表信息

參數說明:
參數:catalog:目錄名稱,一般都為空.
參數:schema:數據庫名,對于oracle來說就用戶名
參數:tablename:表名稱
參數:type :表的類型(TABLE | VIEW)

注意:在使用過程中,參數名稱必須使用大寫的。否則得到什么東西。

三. 方法getColumns的用法

功能描述:得到指定表的列信息。

原型:

ResultSet DatabaseMetaData getColumns(String catalog,String schema,String tableName,String columnName)

參數說明:

參數catalog : 類別名稱
參數schema : 用戶方案名稱
參數tableName : 數據庫表名稱
參數columnName : 列名稱

四、方法getPrimaryKeys的用法

功能描述:得到指定表的主鍵信息。

原型:

ResultSet DatabaseMetaData getPrimaryKeys(String catalog,String schema,String tableName)

參數說明:

參數catalog : 類別名稱
參數schema : 用戶方案名稱
參數tableName : 數據庫表名稱

備注:一定要指定表名稱,否則返回值將是什么都沒有。

五、方法.getTypeInfo()的用法

功能描述:得到當前數據庫的數據類型信息。

六、方法getExportedKeys的用法

功能描述:得到指定表的外鍵信息。

參數描述:
參數catalog : 類別名稱
參數schema : 用戶方案名稱
參數tableName : 數據庫表名稱

下面以MySQL和Oracle為例來講解這個兩個參數。

Oracle和MySQL數據的組織結構是完全不同,直觀表象上,表和視圖的掛接途徑不一樣,在Oracle中,采取的是分用戶管理機制,表和視圖掛接在某個用戶下,此時用戶會成為Oracle的一個”模式(schema)”;而在MySQL中表和視圖是直接掛接在數據庫下的。這樣,在Oralce中獲取catalog得到的是null,獲取schema得到大寫的是用戶名稱列表。而在MySQL中得到的catalog是數據庫名稱列表,而schema是null。讀者可以通過DatabaseMetaData提供的如下兩個方法進行測試,他們返回的都是ResultSet數據類型。

//獲取類別定義

rs=dbmd.getCatalogs();

//獲取模式定義

rs=dbmd.getSchemas();

基于上述分析:

如果數據庫為MySQL:那么第一個參數catalog,可以是數據庫的名稱,當該項為null時候,為Url串中指定的數據庫名稱,第二個參數schema,填入null;

如果數據庫為Oralce: 那么第一個參數catalog,為null,第二個參數schema,填入大寫的用戶名稱例如”SCOTT”,如果該項目為null,那么查詢范圍為所有的模式用戶。
 
返回值分析

方法getTables返回值是一個結果集(ResultSet)類型,對于該結果集中的信息,到JDK1.5預留了20多個項目用來描述表的相關信息,但是,并不是每個數據都會將這20多個項目返回的. 我們能夠常用到的有如下的四個項目:

TABLE_SCHEM:對于Oracle而言,是大寫的用戶名稱,對MySQL而言為null 。

TABLE_NAME:表的名稱 。

TABLE_CAT=對Oracle而言為null,對MySQL而言是數據庫名稱 。

TABLE_TYPE=表的類型,依據第四個參數types數組中的某一項,用以表和視圖。

import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;public class dababase {private String url="jdbc:oracle:thin:@localhost:1521:zhyl";//服務器地址:,端口號:1521,數據庫實例名字:zhyl。private String username="andatabase";private String pw="oracl";private Connection conn=null;//用戶名字和密碼是自己建立的。public Connection OpenConn(){try {Class.forName("oracle.jdbc.driver.OracleDriver");try {conn=DriverManager.getConnection(url,username,pw);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return conn;}public ResultSet executeQuery(String sql){dababase db = new dababase();ResultSet rs = null;Connection con =db.OpenConn();  try {    Statement sm = con.createStatement();    rs = sm.executeQuery(sql);  } catch (SQLException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }  return rs;}public void close(){  try {   conn.close();  } catch (SQLException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }}// 獲取數據庫中所有表的表名,并添加到列表結構中。public List getTableNameList(Connection conn) throws SQLException {DatabaseMetaData dbmd = conn.getMetaData();//訪問當前用戶ANDATABASE下的所有表ResultSet rs = dbmd.getTables("null", "ANDATABASE", "%", new String[] { "TABLE" });//System.out.println("kkkkkk"+dbmd.getTables("null", "%", "%", new String[] { "TABLE" }));List tableNameList = new ArrayList();while (rs.next()) {tableNameList.add(rs.getString("TABLE_NAME"));}return tableNameList;}// 獲取數據表中所有列的列名,并添加到列表結構中。public List getColumnNameList(Connection conn, String tableName)throws SQLException {DatabaseMetaData dbmd = conn.getMetaData();ResultSet rs = dbmd.getColumns(null, "%", tableName, "%");List columnNameList = new ArrayList();while (rs.next()) {columnNameList.add(rs.getString("COLUMN_NAME"));}return columnNameList;}public static void main(String s[]) throws SQLException{dababase dbConn = new dababase();Connection conn = dbConn.OpenConn();if(conn==null)System.out.println("連接失敗");elseSystem.out.println("連接成功");try {List tableList = dbConn.getTableNameList(conn);//取出當前用戶的所有表//List tableList = dbConn.getColumnNameList(conn, "LOGIN");//表名稱必須是大寫的,取出當前表的所有列System.out.println(tableList.size());for (Object object : tableList) {String ss=(String)object;System.out.println(ss);}} catch (SQLException e) {e.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}}

以上就是小編為大家帶來的java 查詢oracle數據庫所有表DatabaseMetaData的用法(詳解)全部內容了,希望大家多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴安县| 渭南市| 临漳县| 尼木县| 剑河县| 上杭县| 孟村| 米易县| 安新县| 利辛县| 沙坪坝区| 元阳县| 蓬溪县| 武宣县| 耒阳市| 容城县| 罗田县| 建瓯市| 铜山县| 洛扎县| 林甸县| 沾益县| 崇明县| 河源市| 呼伦贝尔市| 大连市| 乐昌市| 阳泉市| 南部县| 宁明县| 永善县| 越西县| 京山县| 贺州市| 沙洋县| 关岭| 长丰县| 探索| 大石桥市| 志丹县| 五家渠市|