November 27,2008

如何取得ResultSet裡的ColumnName

ResultSet是SQL查詢後的結果, 但ResultSet所有的方法都沒有辦法"直接"取得ColumnName(欄位名稱)

所以必須繞道而行, 建立一個ResultSetMetaData
MetaDate是中介資料, SQL的SELECT查詢出來的結果都是取出欄位裡的值(ColumnValues)

假設在SQL有一個表格(Table), 名叫"test_table001"
裡面有兩筆資料,

table name: test_table001

id
message
date
1
Hello! World!
2008-11-19
2Hello! Java!
2008-11-27


對它下了一個SELECT查詢,

SELECT * FROM test_table001;

回傳了一個ResultSet類型的資料
用ResultSet像是getString()或是getInt()等等的方法
就可以得到表格內的資料,

但是要取得像是id, message, date這些欄位名稱(ColumnName)時
ResultSet就沒有適當的方法可以使用了

這時就要先建立一個MetaData來取得, 也就是ResultSetMetaData
假設ResultSet為rs
建立方法為:

ResultSetMetaData rsmd = rs.getMetaData();

取得了MetaData之後, 就可以使用它的各類方法來取得中介資料了

回傳型別 方法名稱(參數型別)
方法說明
int getColumnCount()取得 ResultSet 類別物件中的欄位個數
int getColumnDisplaySize(int column)取得 ResultSet 類別物件中的欄位長度
String getColumnName(int column)取得 ResultSet 類別物件中的欄位名稱
String getColumnTypeName(int column)取得 ResultSet 類別物件中的欄位型態名稱
String getTableName(int column)取得 ResultSet 類別物件中的欄位所屬 Table 的名稱
boolean isCaseSensitive(int column)測試 ResultSet 類別物件中的欄位是否區分大小寫
boolean isReadOnly(int column)測試 ResultSet 類別物件中的欄位是否為唯讀

像是要取得Table test_table001裡面的Hello! World!的欄位名稱
就可以使用 getColumnName方法: 此例會回傳字串 "message"

如果不曉得有多少個欄位, 就使用getColumnCount方法: 此例會回傳整數 3

想取得該欄位的型別, 就使用getColumnTypeName方法: 此例會回傳字串 "varchar"

想取得表格本身的名稱, 就使用getTableName方法: 此例會回傳字串 "test_table001"



其實這些資訊在Java API裡也有~@w@

Posted by makiakatsu at 樂多Roodo! │13:32 │回應(0)引用(0)熊的資料庫(MySQL相關)
樂多分類:日記/一般 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/7721123