Java 通過JDBC獲得連接配接以後,得到一個Connection 對象,可以從這個對象獲得有關資料庫管理系統的各種資訊,包括資料庫中的各個表,表中的各個列,資料類型,觸發器,存儲過程等各方面的資訊。根據這些資訊,JDBC可以通路一個實作事先并不了解的資料庫。
擷取這些資訊的方法都是在DatabaseMetaData類的對象上實作的,而DataBaseMetaData對象是在Connection對象上獲得的。
DatabaseMetaData 類中提供了許多方法用于獲得資料源的各種資訊,通過這些方法可以非常詳細的了解資料庫的資訊:
- getURL():傳回一個String類對象,代表資料庫的URL。
- getUserName():傳回連接配接目前資料庫管理系統的使用者名。
- isReadOnly():傳回一個boolean值,訓示資料庫是否隻允許讀操作。
- getDatabaseProductName():傳回資料庫的産品名稱。
- getDatabaseProductVersion():傳回資料庫的版本号。
- getDriverName():傳回驅動驅動程式的名稱。
- getDriverVersion():傳回驅動程式的版本号。
1 /**
2 * 查詢特定資料庫中的所有表
3 * @param connection 資料庫連接配接對象
4 * @return 資料庫表的list
5 */
6 public static List<String> getTables(Connection connection){
7 try {
8 List<String> tableList = new ArrayList<>();
9 DatabaseMetaData metaData = connection.getMetaData();
10 ResultSet resultSet = metaData.getTables(null, null, null, new String[]{"TABLE"});
11 while (resultSet.next()){
12 tableList.add(resultSet.getString(3));
13 }
14 return tableList;
15 } catch (SQLException e) {
16 e.printStackTrace();
17 }
18 return null;
19 }
可用于擷取關于 ResultSet 對象中列的類型和屬性資訊的對象:
- getColumnName(int column):擷取指定列的名稱
- getColumnCount():傳回目前 ResultSet 對象中的列數。
- getColumnTypeName(int column):檢索指定列的資料庫特定的類型名稱。
- getColumnDisplaySize(int column):訓示指定列的最大标準寬度,以字元為機關。
- isNullable(int column):訓示指定列中的值是否可以為 null。
- isAutoIncrement(int column):訓示是否自動為指定列進行編号,這樣這些列仍然是隻讀的。