Java 通過JDBC獲得連接以后,得到一個Connection 對象,可以從這個對象獲得有關數據庫管理系統的各種信息,包括數據庫中的各個表,表中的各個列,數據類型,觸發器,存儲過程等各方面的信息。根據這些信息,JDBC可以訪問一個實現事先并不了解的數據庫。
獲取這些信息的方法都是在DatabaseMetaData類的對象上實現的,而DataBaseMetaData對象是在Connection對象上獲得的。
DatabaseMetaData 類中提供了許多方法用于獲得數據源的各種信息,通過這些方法可以非常詳細的了解數據庫的信息:
getURL():返回一個String類對象,代表數據庫的URL。
getUserName():返回連接當前數據庫管理系統的用戶名。
isReadOnly():返回一個boolean值,指示數據庫是否只允許讀操作。
getDatabaseProductName():返回數據庫的產品名稱。
getDatabaseProductVersion():返回數據庫的版本號。
getDriverName():返回驅動驅動程序的名稱。
getDriverVersion():返回驅動程序的版本號。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/** * 查詢特定數據庫中的所有表 * @param connection 數據庫連接對象 * @return 數據庫表的list */ public static List<String> getTables(Connection connection){ try { List<String> tableList = new ArrayList<>(); DatabaseMetaData metaData = connection.getMetaData(); ResultSet resultSet = metaData.getTables( null , null , null , new String[]{ "TABLE" }); while (resultSet.next()){ tableList.add(resultSet.getString( 3 )); } return tableList; } catch (SQLException e) { e.printStackTrace(); } return null ; } |
可用于獲取關于 ResultSet 對象中列的類型和屬性信息的對象:
getColumnName(int column):獲取指定列的名稱
getColumnCount():返回當前 ResultSet 對象中的列數。
getColumnTypeName(int column):檢索指定列的數據庫特定的類型名稱。
getColumnDisplaySize(int column):指示指定列的最大標準寬度,以字符為單位。
isNullable(int column):指示指定列中的值是否可以為 null。
isAutoIncrement(int column):指示是否自動為指定列進行編號,這樣這些列仍然是只讀的。
總結
以上就是本文淺談JDBC 元數據的全部內容,希望對大家有所幫助。歡迎大家參閱本站其他專題,有什么問題可以隨時留言,小編會及時回復大家的。感謝大家對服務器之家網站的支持!
原文鏈接:http://www.cnblogs.com/infaraway/p/6509342.html