mysql 别名 metadata_获取数据库元数据:DatabaseMetaData与ParameterMetaData与ResultSetMetaData...
(1)Meta-Data:關于數據的數據,在此是有關數據庫和數據庫表等數據庫對象的信息;
通過Connection的getMetaData()方法獲得包含數據庫元數據的DatabaseMetaData對象,然后在此對象上調用相關的方法獲得對應的信息;
(2)DatabaseMetaData meta = connection.getMetaData();
通過DatabaseMetaData可以獲得數據庫相關的信息如:數據庫版本、數據庫名、數據庫廠商信息、是否支持事務、是否支持某種事務隔離級別,是否支持滾動結果集等。
ParameterMetaData pmd =
preparedStatement.getParameterMetaData();
通過 ParameterMetaData可以獲得參數信息。
(3)ResultSetMetaData meta = rs.getMetaData();
通過ResultSetMetaData可以獲得結果有幾列、各列名、各列別名、各列類型等。
可以將ResultSet放入Map(key:列名 value:列值)。
用反射ResultSetMetaData將查詢結果讀入對象中(簡單的O/RMapping)
1)讓SQL語句中列別名和要讀入的對象屬性名一樣;
2)通過ResultSetMetaData獲得結果列數和列別名;
3)通過反射將對象的所有setXxx方法找到;
4)將3)找到的方法setXxx和2)找到的列別名進行匹配(即方法中的xxx于列別名相等);
5)由上一步找到的方法和列別名對應關系進行賦值
Method.invoke(obj,
rs.getObject(columnAliasName));
代碼如下所示:
package com.mysql;
import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class Select {
public void select(int key){
Connection conn = null;
PreparedStatement ps =
null;
ResultSet rs = null;
String sql ="select
v_name,v_pass,v_sex from t_user where id = ? ";
try {
conn =
Tooles.getConnection();
java.sql.DatabaseMetaData
dm = conn.getMetaData();
ps =
conn.prepareStatement(sql);
ps.setInt(1,
key);
rs =
ps.executeQuery();
ParameterMetaData
pm = ps.getParameterMetaData();
ResultSetMetaData
rsm = rs.getMetaData();
while(rs.next()){
System.out.println(rs.getString(1)
+ rs.getString(2)+rs.getString(3));
}
System.out.println("**************************************");
System.out.println(dm.doesMaxRowSizeIncludeBlobs());
System.out.println(dm.getDriverName());
System.out.println(dm.getDriverVersion());
System.out.println(dm.getURL());
System.out.println(dm.getUserName());
System.out.println("****************************************");
System.out.println(pm.getParameterCount());
System.out.println("****************************************");
System.out.println(rsm.getColumnCount());
System.out.println(rsm.getCatalogName(1));
System.out.println(rsm.getColumnClassName(1));
System.out.println(rsm.getColumnDisplaySize(1));
} catch (SQLException e)
{
e.printStackTrace();
}finally{
Tooles.free(rs,
ps, conn);
}
}
public static void main(String[] args) {
new Select().select(10);
}
}
總結
以上是生活随笔為你收集整理的mysql 别名 metadata_获取数据库元数据:DatabaseMetaData与ParameterMetaData与ResultSetMetaData...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言程序停止正常工作,C语言 由于出现
- 下一篇: mysql 加载数据校验_mysql 导