學習ResultSetMetaData、DatabaseMetaData的知識

ResultSetMetaData 、DatabaseMetaData中的方法介紹

利用ResultSet的getMetaData的方法可以獲得ResultSetMeta對象,而ResultSetMetaData存儲了 ResultSet的MetaData。所謂的MetaData在英文中的解釋爲“Data about Data”,直譯成中文則爲“有關數據的數據”或者“描述數據的數據”,實際上就是描述及解釋含義的數據。以Result的MetaData爲例,ResultSet是以表格的形式存在,所以getMetaData就包括了數據的字段名稱、類型以及數目等表格所必須具備的信息。 
在 ResultSetMetaData類中主要有一下幾個方法。

ResultSetMetaData rsmd=rs.getMetaData();

1.getColumCount()方法

方法的原型:public int getColumCount() throws SQLException。

方法說明:返回所有字段的數目

返回值:所有字段的數目(整數)。

異常產生:數據庫發生任何的錯誤,則會產生一個SQLException對象。

2.getColumName()方法

方法的原型:public String getColumName (int colum) throws SQLException。

方法說明:根據字段的索引值取得字段的名稱。

參數:colum,字段的索引值,從1開始。

返回值:字段的名稱(字符串)。

異常產生:數據庫發生任何的錯誤,則會產生一個SQLException對象。

3.getColumType()方法

方法的原型:public String getColumType (int colum) throws SQLException。

方法說明:根據字段的索引值取得字段的類型,返回值的定義在java.sql.Type類。

參數:colum,字段的索引值,從1開始。

返回值:字符串,SQL的數據類型定義在java.sql.Type類。

異常產生:數據庫發生任何的錯誤,則會產生一個SQLException對象。

方法摘要 

String getCatalogName(int column)           獲取指定列的表目錄名稱。
String getColumnClassName(int column)           如果調用方法 ResultSet.getObject 從列中檢索值,則返回構造其實例的 Java 類的完全限定名稱。
int getColumnCount()           返回此 ResultSet 對象中的列數。
int getColumnDisplaySize(int column)           指示指定列的最大標準寬度,以字符爲單位。
String getColumnLabel(int column)           獲取用於打印輸出和顯示的指定列的建議標題。
String getColumnName(int column)           獲取指定列的名稱。
int getColumnType(int column)           檢索指定列的 SQL 類型。
String getColumnTypeName(int column)           檢索指定列的數據庫特定的類型名稱。
int getPrecision(int column)           獲取指定列的小數位數。
int getScale(int column)           獲取指定列的小數點右邊的位數。
String getSchemaName(int column)           獲取指定列的表模式。
String getTableName(int column)           獲取指定列的名稱。
boolean isAutoIncrement(int column)           指示是否自動爲指定列進行編號,這樣這些列仍然是隻讀的。
boolean isCaseSensitive(int column)           指示列的大小寫是否有關係。
boolean isCurrency(int column)           指示指定的列是否是一個哈希代碼值。
boolean isDefinitelyWritable(int column)           指示在指定的列上進行寫操作是否明確可以獲得成功。
int isNullable(int column)           指示指定列中的值是否可以爲 null。
boolean isReadOnly(int column)           指示指定的列是否明確不可寫入。
boolean isSearchable(int column)           指示是否可以在 where 子句中使用指定的列。
boolean isSigned(int column)           指示指定列中的值是否帶正負號。
boolean isWritable(int column)           指示在指定的列上進行寫操作是否可以獲得成功。

使用DatabaseMetaData則是用來獲得數據庫的信息,下面介紹這個類的使用方法。

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語句。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章