最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 查詢(xún)oracle數(shù)據(jù)庫(kù)所有表DatabaseMetaData的用法(詳解)

 更新時(shí)間:2016年11月12日 20:06:38   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇java 查詢(xún)oracle數(shù)據(jù)庫(kù)所有表DatabaseMetaData的用法(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

一 . 得到這個(gè)對(duì)象的實(shí)例

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

二. 方法getTables的用法

原型:

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

此方法可返回結(jié)果集合ResultSet ,結(jié)果集中有5列, 超出會(huì)報(bào)越界異常

功能描述:得到指定參數(shù)的表信息

參數(shù)說(shuō)明:
參數(shù):catalog:目錄名稱(chēng),一般都為空.
參數(shù):schema:數(shù)據(jù)庫(kù)名,對(duì)于oracle來(lái)說(shuō)就用戶(hù)名
參數(shù):tablename:表名稱(chēng)
參數(shù):type :表的類(lèi)型(TABLE | VIEW)

注意:在使用過(guò)程中,參數(shù)名稱(chēng)必須使用大寫(xiě)的。否則得到什么東西。

三. 方法getColumns的用法

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

原型:

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

參數(shù)說(shuō)明:

參數(shù)catalog : 類(lèi)別名稱(chēng)
參數(shù)schema : 用戶(hù)方案名稱(chēng)
參數(shù)tableName : 數(shù)據(jù)庫(kù)表名稱(chēng)
參數(shù)columnName : 列名稱(chēng)

四、方法getPrimaryKeys的用法

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

原型:

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

參數(shù)說(shuō)明:

參數(shù)catalog : 類(lèi)別名稱(chēng)
參數(shù)schema : 用戶(hù)方案名稱(chēng)
參數(shù)tableName : 數(shù)據(jù)庫(kù)表名稱(chēng)

備注:一定要指定表名稱(chēng),否則返回值將是什么都沒(méi)有。

五、方法.getTypeInfo()的用法

功能描述:得到當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)類(lèi)型信息。

六、方法getExportedKeys的用法

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

參數(shù)描述:
參數(shù)catalog : 類(lèi)別名稱(chēng)
參數(shù)schema : 用戶(hù)方案名稱(chēng)
參數(shù)tableName : 數(shù)據(jù)庫(kù)表名稱(chēng)

下面以MySQL和Oracle為例來(lái)講解這個(gè)兩個(gè)參數(shù)。

Oracle和MySQL數(shù)據(jù)的組織結(jié)構(gòu)是完全不同,直觀表象上,表和視圖的掛接途徑不一樣,在Oracle中,采取的是分用戶(hù)管理機(jī)制,表和視圖掛接在某個(gè)用戶(hù)下,此時(shí)用戶(hù)會(huì)成為Oracle的一個(gè)”模式(schema)”;而在MySQL中表和視圖是直接掛接在數(shù)據(jù)庫(kù)下的。這樣,在Oralce中獲取catalog得到的是null,獲取schema得到大寫(xiě)的是用戶(hù)名稱(chēng)列表。而在MySQL中得到的catalog是數(shù)據(jù)庫(kù)名稱(chēng)列表,而schema是null。讀者可以通過(guò)DatabaseMetaData提供的如下兩個(gè)方法進(jìn)行測(cè)試,他們返回的都是ResultSet數(shù)據(jù)類(lèi)型。

//獲取類(lèi)別定義

rs=dbmd.getCatalogs();

//獲取模式定義

rs=dbmd.getSchemas();

基于上述分析:

如果數(shù)據(jù)庫(kù)為MySQL:那么第一個(gè)參數(shù)catalog,可以是數(shù)據(jù)庫(kù)的名稱(chēng),當(dāng)該項(xiàng)為null時(shí)候,為Url串中指定的數(shù)據(jù)庫(kù)名稱(chēng),第二個(gè)參數(shù)schema,填入null;

如果數(shù)據(jù)庫(kù)為Oralce: 那么第一個(gè)參數(shù)catalog,為null,第二個(gè)參數(shù)schema,填入大寫(xiě)的用戶(hù)名稱(chēng)例如”SCOTT”,如果該項(xiàng)目為null,那么查詢(xún)范圍為所有的模式用戶(hù)。
 
返回值分析

方法getTables返回值是一個(gè)結(jié)果集(ResultSet)類(lèi)型,對(duì)于該結(jié)果集中的信息,到JDK1.5預(yù)留了20多個(gè)項(xiàng)目用來(lái)描述表的相關(guān)信息,但是,并不是每個(gè)數(shù)據(jù)都會(huì)將這20多個(gè)項(xiàng)目返回的. 我們能夠常用到的有如下的四個(gè)項(xiàng)目:

TABLE_SCHEM:對(duì)于Oracle而言,是大寫(xiě)的用戶(hù)名稱(chēng),對(duì)MySQL而言為null 。

TABLE_NAME:表的名稱(chēng) 。

TABLE_CAT=對(duì)Oracle而言為null,對(duì)MySQL而言是數(shù)據(jù)庫(kù)名稱(chēng) 。

TABLE_TYPE=表的類(lèi)型,依據(jù)第四個(gè)參數(shù)types數(shù)組中的某一項(xiàng),用以表和視圖。

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";

//服務(wù)器地址:,端口號(hào):1521,數(shù)據(jù)庫(kù)實(shí)例名字:zhyl。

private String username="andatabase";

private String pw="oracl";

private Connection conn=null;

//用戶(hù)名字和密碼是自己建立的。

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();

  }
}

// 獲取數(shù)據(jù)庫(kù)中所有表的表名,并添加到列表結(jié)構(gòu)中。

public List getTableNameList(Connection conn) throws SQLException {

DatabaseMetaData dbmd = conn.getMetaData();

//訪(fǎng)問(wèn)當(dāng)前用戶(hù)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;

}

// 獲取數(shù)據(jù)表中所有列的列名,并添加到列表結(jié)構(gòu)中。

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);//取出當(dāng)前用戶(hù)的所有表

//List tableList = dbConn.getColumnNameList(conn, "LOGIN");//表名稱(chēng)必須是大寫(xiě)的,取出當(dāng)前表的所有列

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();

}
}
}
}
}

以上就是小編為大家?guī)?lái)的java 查詢(xún)oracle數(shù)據(jù)庫(kù)所有表DatabaseMetaData的用法(詳解)全部?jī)?nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

  • Java并發(fā)編程之淺談ReentrantLock

    Java并發(fā)編程之淺談ReentrantLock

    今天帶大家學(xué)習(xí)Java并發(fā)編程的相關(guān)知識(shí),文中對(duì)Java ReentrantLock作了非常詳細(xì)的圖文示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • 通過(guò)Java實(shí)現(xiàn)在Word中創(chuàng)建可填充表單

    通過(guò)Java實(shí)現(xiàn)在Word中創(chuàng)建可填充表單

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Java代碼,以編程方式在Word中創(chuàng)建可填充表單,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • JavaWeb入門(mén):HttpResponse和HttpRequest詳解

    JavaWeb入門(mén):HttpResponse和HttpRequest詳解

    這篇文章主要介紹了Django的HttpRequest和HttpResponse對(duì)象,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • 淺談SpringBoot中的@Conditional注解的使用

    淺談SpringBoot中的@Conditional注解的使用

    這篇文章主要介紹了淺談SpringBoot中的@Conditional注解的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04
  • MyBatis?多表聯(lián)合查詢(xún)及優(yōu)化方法

    MyBatis?多表聯(lián)合查詢(xún)及優(yōu)化方法

    大家都知道Hibernate 是全自動(dòng)的數(shù)據(jù)庫(kù)持久層框架,它可以通過(guò)實(shí)體來(lái)映射數(shù)據(jù)庫(kù),通過(guò)設(shè)置一對(duì)多、多對(duì)一、一對(duì)一、多對(duì)多的關(guān)聯(lián)來(lái)實(shí)現(xiàn)聯(lián)合查詢(xún),接下來(lái)通過(guò)本文給大家介紹MyBatis?多表聯(lián)合查詢(xún)及優(yōu)化,需要的朋友可以參考下
    2022-08-08
  • springboot連接多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法

    springboot連接多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法

    有時(shí)候一個(gè)SpringBoot項(xiàng)目需要同時(shí)連接兩個(gè)數(shù)據(jù)庫(kù),本文就來(lái)介紹一下springboot連接多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • SpringBoot使用Redis緩存的實(shí)現(xiàn)方法

    SpringBoot使用Redis緩存的實(shí)現(xiàn)方法

    這篇文章主要介紹了SpringBoot使用Redis緩存的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2018-02-02
  • elasticsearch源碼分析index?action實(shí)現(xiàn)方式

    elasticsearch源碼分析index?action實(shí)現(xiàn)方式

    這篇文章主要為大家介紹了elasticsearch源碼分析index?action實(shí)現(xiàn)方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • 使用Maven打包時(shí)排除指定的目錄或指定的類(lèi)

    使用Maven打包時(shí)排除指定的目錄或指定的類(lèi)

    在maven項(xiàng)目中,通過(guò)修改pom.xml文件,在maven-compiler-plugin的configuration>excludes節(jié)點(diǎn)下添加排除匹配條件,可以剔除掉生產(chǎn)包中的測(cè)試類(lèi),注意使用**表示多級(jí)目錄匹配,*表示一級(jí)目錄匹配
    2024-11-11
  • 在Java內(nèi)存模型中測(cè)試并發(fā)程序代碼

    在Java內(nèi)存模型中測(cè)試并發(fā)程序代碼

    這篇文章主要介紹了在Java內(nèi)存模型中測(cè)試并發(fā)程序代碼,輔以文中所提到的JavaScript庫(kù)JCStress進(jìn)行,需要的朋友可以參考下
    2015-07-07

最新評(píng)論

泽州县| 马公市| 瓮安县| 和硕县| 玉龙| 如东县| 开封县| 新源县| 柳江县| 麻栗坡县| 宣汉县| 安远县| 上高县| 葫芦岛市| 西青区| 长寿区| 依安县| 申扎县| 诸暨市| 宜宾县| 鹤岗市| 稻城县| 舒兰市| 凭祥市| 吉安县| 托克逊县| 东兴市| 长泰县| 长顺县| 清苑县| 邵阳市| 东乌珠穆沁旗| 赣榆县| 新宁县| 泸定县| 海兴县| 华安县| 屏山县| 铜川市| 五峰| 临颍县|