天天看點

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 : 資料庫表名稱

DatabaseMetaData對象提供的是關于資料庫的各種資訊,這些資訊包括:

1、資料庫與使用者,資料庫辨別符以及函數與存儲過程。

2、資料庫限制。

3、資料庫支援不支援的功能。

4、架構、編目、表、列和視圖等。

通過調用DatabaseMetaData的各種方法,程式可以動态的了解一個資料庫。由于這個類中的方法非常的多那麼就介紹幾個常用的方法來給大家參考。

DatabaseMetaData執行個體的擷取方法是,通過連接配接來獲得的

Connection conn = //建立的連接配接。

DatabaseMetaData dbmd = Conn.getMetaData();

建立了這個執行個體,就可以使用他的方法來擷取資料庫得資訊。首先是資料庫中使用者辨別符的資訊的獲得,主要使用如下的方法:

getDatabaseProductName()用以獲得目前資料庫是什麼資料庫。比如oracle,access等。傳回的是字元串。

getDatabaseProductVersion()獲得資料庫的版本。傳回的字元串。

getDriverVersion()獲得驅動程式的版本。傳回字元串。

supportsResultSetType(ResultSet.resultype)是判定是否支援這種結果集的類型。比如參數如果是Result.TYPE_FORWARD_ONLY,那就是判定是否支援,隻能先前移動結果集的指針。傳回值為boolean,true表示支援。

上面介紹的隻是幾個常用的方法,這個類中還有很多方法,可以到jdk的幫助文檔中去檢視類java.sql.DatabaseMetaData。

這個類中還有一個比較常用的方法就是獲得表的資訊。使用的方法是:

getTables(String catalog,String schema,String tableName,String[] types),

這個方法帶有四個參數,他們表示的含義如下:

String catalog——要獲得表所在的編目。串“”””意味着沒有任何編目,Null表示所有編目。

String schema——要獲得表所在的模式。串“”””意味着沒有任何模式,Null表示所有模式。該參數可以包含單字元的通配符(“_”),也可以包含多字元的通配符(“%”)。

String tableName——指出要傳回表名與該參數比對的那些表,該參數可以包含單字元的通配符(“_”),也可以包含多字元的通配符(“%”)。

String types——一個指出傳回何種表的數組。可能的數組項是:”TABLE”,”VIEW”,”SYSTEM TABLE”,”GLOBAL TEMPORARY”,”LOCAL TEMPORARY”,”ALIAS”,“SYSNONYM”。

通過getTables()方法傳回一個表的資訊的結果集。這個結果集包括字段有:TABLE_CAT表所在的編目。TABLE_SCHEM表所在的模式,TABLE_NAME表的名稱。TABLE_TYPE标的類型。REMARKS一段解釋性的備注。通過這些字段可以完成表的資訊的擷取。

還有兩個方法一個是獲得列getColumns(String catalog,String schama,String tablename,String columnPattern)一個是獲得關鍵字的方法getPrimaryKeys(String?catalog, String?schema, String?table)這兩個方法中的參數的含義和上面的介紹的是相同的。凡是pattern的都是可以用通配符比對的。getColums()傳回的是結果集,這個結果集包括了列的所有資訊,類型,名稱,可否為空等。getPrimaryKey()則是傳回了某個表的關鍵字的結果集。

通過getTables(),getColumns(),getPrimaryKeys()就可以完成表的反向設計了。主要步驟如下:

1、通過getTables()獲得資料庫中表的資訊。

2、對于每個表使用,getColumns(),getPrimaryKeys()獲得相應的列名,類型,限制條件,關鍵字等。

3、通過1,2獲得資訊可以生成相應的建表的SQL語句。

通過上述三步完成反向設計表的過程。