程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java 查詢oracle數據庫一切表DatabaseMetaData的用法(詳解)

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

編輯:關於JAVA

java 查詢oracle數據庫一切表DatabaseMetaData的用法(詳解)。本站提示廣大學習愛好者:(java 查詢oracle數據庫一切表DatabaseMetaData的用法(詳解))文章只能為提供參考,不一定能成為您想要的結果。以下是java 查詢oracle數據庫一切表DatabaseMetaData的用法(詳解)正文


一 . 失掉這個對象的實例

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 block

e.printStackTrace();

}

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.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("銜接失敗");

else

System.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的用法(詳解)全部內容了,希望大家多多支持~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved