Java DatabaseMetaData用法案例詳解
一 . 得到這個(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ù)說明:
參數(shù):catalog:目錄名稱,一般都為空.
參數(shù):schema:數(shù)據(jù)庫(kù)名,對(duì)于oracle來說就用戶名
參數(shù):tablename:表名稱
參數(shù):type :表的類型(TABLE | VIEW)
注意:在使用過程中,參數(shù)名稱必須使用大寫的。否則得到什么東西。
三. 方法getColumns的用法
功能描述:得到指定表的列信息。
原型:
ResultSet DatabaseMetaData getColumns(String catalog,String schema,String tableName,String columnName)
參數(shù)說明:
參數(shù)catalog : 類別名稱
參數(shù)schema : 用戶方案名稱
參數(shù)tableName : 數(shù)據(jù)庫(kù)表名稱
參數(shù)columnName : 列名稱
四、方法getPrimaryKeys的用法
功能描述:得到指定表的主鍵信息。
原型:
ResultSet DatabaseMetaData getPrimaryKeys(String catalog,String schema,String tableName)
參數(shù)說明:
參數(shù)catalog : 類別名稱
參數(shù)schema : 用戶方案名稱
參數(shù)tableName : 數(shù)據(jù)庫(kù)表名稱
備注:一定要指定表名稱,否則返回值將是什么都沒有。
五、方法.getTypeInfo()的用法
功能描述:得到當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)類型信息。
六、方法getExportedKeys的用法
功能描述:得到指定表的外鍵信息。
參數(shù)描述:
參數(shù)catalog : 類別名稱
參數(shù)schema : 用戶方案名稱
參數(shù)tableName : 數(shù)據(jù)庫(kù)表名稱
DatabaseMetaData對(duì)象提供的是關(guān)于數(shù)據(jù)庫(kù)的各種信息,這些信息包括:
- 數(shù)據(jù)庫(kù)與用戶,數(shù)據(jù)庫(kù)標(biāo)識(shí)符以及函數(shù)與存儲(chǔ)過程。
- 數(shù)據(jù)庫(kù)限制。
- 數(shù)據(jù)庫(kù)支持不支持的功能。
- 架構(gòu)、編目、表、列和視圖等。
通過調(diào)用DatabaseMetaData的各種方法,程序可以動(dòng)態(tài)的了解一個(gè)數(shù)據(jù)庫(kù)。由于這個(gè)類中的方法非常的多那么就介紹幾個(gè)常用的方法來給大家參考。
DatabaseMetaData實(shí)例的獲取方法是,通過連接來獲得的
Connection conn = //創(chuàng)建的連接。
DatabaseMetaData dbmd = Conn.getMetaData();
創(chuàng)建了這個(gè)實(shí)例,就可以使用他的方法來獲取數(shù)據(jù)庫(kù)得信息。首先是數(shù)據(jù)庫(kù)中用戶標(biāo)識(shí)符的信息的獲得,主要使用如下的方法:
getDatabaseProductName()用以獲得當(dāng)前數(shù)據(jù)庫(kù)是什么數(shù)據(jù)庫(kù)。比如oracle,access等。返回的是字符串。
getDatabaseProductVersion()獲得數(shù)據(jù)庫(kù)的版本。返回的字符串。
getDriverVersion()獲得驅(qū)動(dòng)程序的版本。返回字符串。
supportsResultSetType(ResultSet.resultype)是判定是否支持這種結(jié)果集的類型。比如參數(shù)如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支持,只能先前移動(dòng)結(jié)果集的指針。返回值為boolean,true表示支持。
上面介紹的只是幾個(gè)常用的方法,這個(gè)類中還有很多方法,可以到j(luò)dk的幫助文檔中去查看類java.sql.DatabaseMetaData。
這個(gè)類中還有一個(gè)比較常用的方法就是獲得表的信息。使用的方法是:
getTables(String catalog,String schema,String tableName,String[] types),
這個(gè)方法帶有四個(gè)參數(shù),他們表示的含義如下:
String catalog——要獲得表所在的編目。串“”””意味著沒有任何編目,Null表示所有編目。
String schema——要獲得表所在的模式。串“”””意味著沒有任何模式,Null表示所有模式。該參數(shù)可以包含單字符的通配符(“_”),也可以包含多字符的通配符(“%”)。
String tableName——指出要返回表名與該參數(shù)匹配的那些表,該參數(shù)可以包含單字符的通配符(“_”),也可以包含多字符的通配符(“%”)。
String types——一個(gè)指出返回何種表的數(shù)組??赡艿臄?shù)組項(xiàng)是:”TABLE”,”VIEW”,”SYSTEM TABLE”,”GLOBAL TEMPORARY”,”LOCAL TEMPORARY”,”ALIAS”,“SYSNONYM”。
通過getTables()方法返回一個(gè)表的信息的結(jié)果集。這個(gè)結(jié)果集包括字段有:TABLE_CAT表所在的編目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名稱。TABLE_TYPE標(biāo)的類型。REMARKS一段解釋性的備注。通過這些字段可以完成表的信息的獲取。
還有兩個(gè)方法一個(gè)是獲得列g(shù)etColumns(String catalog,String schama,String tablename,String columnPattern)一個(gè)是獲得關(guān)鍵字的方法getPrimaryKeys(String?catalog, String?schema, String?table)這兩個(gè)方法中的參數(shù)的含義和上面的介紹的是相同的。凡是pattern的都是可以用通配符匹配的。getColums()返回的是結(jié)果集,這個(gè)結(jié)果集包括了列的所有信息,類型,名稱,可否為空等。getPrimaryKey()則是返回了某個(gè)表的關(guān)鍵字的結(jié)果集。
通過getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向設(shè)計(jì)了。主要步驟如下:
- 通過getTables()獲得數(shù)據(jù)庫(kù)中表的信息。
- 對(duì)于每個(gè)表使用,getColumns(),getPrimaryKeys()獲得相應(yīng)的列名,類型,限制條件,關(guān)鍵字等。
- 通過1,2獲得信息可以生成相應(yīng)的建表的SQL語句。
通過上述三步完成反向設(shè)計(jì)表的過程。
到此這篇關(guān)于Java DatabaseMetaData用法案例詳解的文章就介紹到這了,更多相關(guān)Java DatabaseMetaData用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java基于UDP協(xié)議實(shí)現(xiàn)簡(jiǎn)單的聊天室程序
這篇文章主要為大家詳細(xì)介紹了Java基于UDP協(xié)議實(shí)現(xiàn)簡(jiǎn)單的聊天室程序的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07java中靜態(tài)導(dǎo)入機(jī)制用法實(shí)例詳解
這篇文章主要介紹了java中靜態(tài)導(dǎo)入機(jī)制用法實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07Java8新特性之lambda(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)
這篇文章主要介紹了Java8新特性之lambda(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)表達(dá)式的相關(guān)知識(shí),包括lambda語法方面的知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-06-06用Eclipse 創(chuàng)建一個(gè)簡(jiǎn)單的web項(xiàng)目(圖文教程)
下面小編就為大家?guī)硪黄肊clipse 創(chuàng)建一個(gè)簡(jiǎn)單的web項(xiàng)目(圖文教程)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06java實(shí)現(xiàn)下載文件到默認(rèn)瀏覽器路徑
這篇文章主要介紹了java實(shí)現(xiàn)下載文件到默認(rèn)瀏覽器路徑,具有很好的參考價(jià)值,希望對(duì)的大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05RestTemplate的DELETE及PUT等請(qǐng)求方法使用精講
這篇文章主要為大家介紹了RestTemplate的DELETE及PUT等請(qǐng)求方法的使用精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03Spring Eureka 未授權(quán)訪問漏洞修復(fù)問題小結(jié)
項(xiàng)目組使用的 Spring Boot 比較老,是 1.5.4.RELEASE ,最近被檢測(cè)出 Spring Eureka 未授權(quán)訪問漏洞,這篇文章主要介紹了Spring Eureka 未授權(quán)訪問漏洞修復(fù)問題小結(jié),需要的朋友可以參考下2024-04-04Spring入門實(shí)戰(zhàn)之Profile詳解
什么是spring profile?簡(jiǎn)單講profile就是一組配置,不同profile提供不同組合的配置,程序運(yùn)行時(shí)可以選擇使用哪些profile來適應(yīng)環(huán)境。下面這篇文章主要介紹了Spring中Profile實(shí)戰(zhàn)的相關(guān)資料,需要的朋友可以參考借鑒。2017-02-02