MetaData 元數(shù)據(jù)
指數(shù)據(jù)庫中 庫、表、列的定義信息。
DataBaseMetaData 數(shù)據(jù)庫元數(shù)據(jù)
通過DataBaseMetaData獲取數(shù)據(jù)庫連接的基本信息
- getURL(); 返回一個String類對象,代表數(shù)據(jù)庫的URL
- getUserName(); 返回連接當(dāng)前數(shù)據(jù)庫管理系統(tǒng)的用戶名
- getDriverName(); 返回驅(qū)動程序的名稱
- getPrimaryKeys(String catalog, String schema, String table); 返回指定表主鍵的結(jié)果集
- 1 - TABLE_CAT String => 表類別(可為null)
- 2 - TABLE_SCHEM String => 表模式(可為null)
- 3 - TABLE_NAME String => 表名稱
- 4 - COLUMN_NAME String => 列名稱
- 5 - KEY_SEQ short => 主鍵中的序列號
- 6 - PK_NAME String =>主鍵的名稱(可為null)
public class DataBaseMetaDataTest {
public static void main(String[] args) throws Exception {
Connection con = jdbcUtils.getConnection();
//獲取DataBaseMetaData對象
DatabaseMetaData dmd = con.getMetaData();
String driverName = dmd.getDriverName();
System.out.println(driverName);
String userName = dmd.getUserName();
System.out.println(userName);
String url = dmd.getURL();
System.out.println(url);
//數(shù)據(jù)庫產(chǎn)品名稱,MySQL
String name = dmd.getDatabaseProductName();
System.out.println(name);
//版本
String version = dmd.getDatabaseProductVersion();
System.out.println(version);
ResultSet rs = dmd.getPrimaryKeys(null, null, "account");
while(rs.next()){
System.out.println(rs.getObject(3));//3,代表第三列TABLE_NAME
}
}
}
獲取數(shù)據(jù)庫表、列、主鍵、外鍵定義信息
- getTables
- getColumns
- getPrimaryKeys
ParameterMetaData 參數(shù)元數(shù)據(jù)
參數(shù)元數(shù)據(jù)主要用于獲取sql語句中占位符的相關(guān)信息。
- 獲取參數(shù)元數(shù)據(jù)
- PreparedStatement.getParameterMetaData()
- ParameterMetaData 對象
- getParameterCount() 獲取指定參數(shù)的個數(shù)
- getParameterTypeName(int param) 獲得指定參數(shù)的sql類型
public class ParameterMetaDateTest {
public static void main(String[] args) throws Exception {
Connection con = jdbcUtils.getConnection();
String sql = "select * from account where id=?";
PreparedStatement pst = con.prepareStatement(sql);
//獲取一個ParameterMetaData
ParameterMetaData pm = pst.getParameterMetaData();
int count = pm.getParameterCount();//獲取參數(shù)個數(shù)
String name = pm.getParameterTypeName(1);
//需要在url后添加參數(shù)?generateSimpleParameterMetadata=true
System.out.println(name);
}
}
ResultSetMetaData結(jié)果集元數(shù)據(jù)(重點)
- 獲得ResultSetMetaData對象
- ResultSet.getMetaData();
- ResultSetMetaData對象
- getColumnCount(); 返回resultSet對象的列數(shù)
- getColumnName(int column);
- getColumnTypeName(int column);
public class ResultSetMetaDateTest {
public static void main(String[] args) throws Exception{
Connection con = jdbcUtils.getConnection();
ResultSet rs = con.createStatement().executeQuery("select * from account");
//得到結(jié)果集元數(shù)據(jù)
ResultSetMetaData rmd = rs.getMetaData();
System.out.println(rmd.getColumnCount());
System.out.println(rmd.getColumnName(2));
System.out.println(rmd.getColumnTypeName(1));
}
}