JDBC以及相關技術學習(八)----JDBC元數據

元數據是什麼?元數據就是本身固有的特性,比如數據庫的元數據,就是指數據庫本身具有的各種特性,如是否支持事務,數據庫名稱等。

在JDBC中,元數據主要包括三種,即數據庫元數據(DatabaseMetaData)、參數元數據(ParameterMetaData)、結果集元數據(ResultSetMetaData)


數據庫元數據:

Connection conn = JdbcUtils.getConnection();

DatabaseMetaData dbmd = conn.getMetaData();        //獲得數據庫元數據對象

System.out.println( dbmd.getDatabaseProductName()); //打印數據庫名稱

Systme.out.println( dbmd.supportsTransactions()); //打印是否支持事務

.........

需要注意,數據庫元數據的對象是從connection中獲取的,而其他元數據則是從PreparedStatement與ResultSet獲取的。


參數元數據:

PreparedStatement pStatement = conn.prepareStatement(sql);
ParameterMetaData pmd = pStatement.getParameterMetaData();
int count = pmd.getParameterCount();//獲取到參數的個數
for(int i = 1; i < count;i++)
{
System.out.println(pmd.getParameterClassName(i));//打印JAVA數據類型名, 如java.lang.String
System.out.println(pmd.getParameterType(i));//打印數據庫類型號
System.out.println(pmd.getParameterTypeName(i));//打印數據庫類型名,如varchar

}


數據集元數據:

這個元數據是最重要的,很多ORM框架就是使用JDBC獲取數據後,根據結果集元數據給對象賦值(利用反射技術),實現對象的持久化的,上代碼:

public static void read(String sql) throws SQLException{
JDBCToolSingleTon jDBCToolSingleTon = JDBCToolSingleTon.getInstance();
Connection conn = jDBCToolSingleTon.getConnection();
 
PreparedStatement pStatement = conn.prepareStatement(sql);
 
 
ResultSet resultSet = pStatement.executeQuery();//注意,這裏不能加上參數,否則就是調用了Statement了
ResultSetMetaData rsmd = resultSet.getMetaData();//獲取結果集源數據
int count = rsmd.getColumnCount();//獲取列數量
String[] colNames = new String[count];
for(int i = 1; i <=count;i++){
System.out.println(rsmd.getColumnClassName(i));//類名
System.out.println(rsmd.getColumnName(i));//列名
System.out.println(rsmd.getColumnLabel(i));//列標籤

}
 
Map<String,Object> data = null;
 
if(resultSet.next()){
data = new HashMap<String,Object>();
for(int i = 0; i <colNames.length;i++ ){
data.put(colNames[i], resultSet.getObject(colNames[i]));
}
System.out.println(resultSet.getString("name"));
}
jDBCToolSingleTon.freeResource(conn, resultSet, pStatement);








發佈了41 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章