mysql 别名 metadata_获取数据库元数据:DatabaseMetaData与ParameterMetaData与ResultSetMetaData...
(1)Meta-Data:關(guān)于數(shù)據(jù)的數(shù)據(jù),在此是有關(guān)數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)表等數(shù)據(jù)庫(kù)對(duì)象的信息;
通過(guò)Connection的getMetaData()方法獲得包含數(shù)據(jù)庫(kù)元數(shù)據(jù)的DatabaseMetaData對(duì)象,然后在此對(duì)象上調(diào)用相關(guān)的方法獲得對(duì)應(yīng)的信息;
(2)DatabaseMetaData meta = connection.getMetaData();
通過(guò)DatabaseMetaData可以獲得數(shù)據(jù)庫(kù)相關(guān)的信息如:數(shù)據(jù)庫(kù)版本、數(shù)據(jù)庫(kù)名、數(shù)據(jù)庫(kù)廠(chǎng)商信息、是否支持事務(wù)、是否支持某種事務(wù)隔離級(jí)別,是否支持滾動(dòng)結(jié)果集等。
ParameterMetaData pmd =
preparedStatement.getParameterMetaData();
通過(guò) ParameterMetaData可以獲得參數(shù)信息。
(3)ResultSetMetaData meta = rs.getMetaData();
通過(guò)ResultSetMetaData可以獲得結(jié)果有幾列、各列名、各列別名、各列類(lèi)型等。
可以將ResultSet放入Map(key:列名 value:列值)。
用反射ResultSetMetaData將查詢(xún)結(jié)果讀入對(duì)象中(簡(jiǎn)單的O/RMapping)
1)讓SQL語(yǔ)句中列別名和要讀入的對(duì)象屬性名一樣;
2)通過(guò)ResultSetMetaData獲得結(jié)果列數(shù)和列別名;
3)通過(guò)反射將對(duì)象的所有setXxx方法找到;
4)將3)找到的方法setXxx和2)找到的列別名進(jìn)行匹配(即方法中的xxx于列別名相等);
5)由上一步找到的方法和列別名對(duì)應(yīng)關(guān)系進(jìn)行賦值
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);
}
}
總結(jié)
以上是生活随笔為你收集整理的mysql 别名 metadata_获取数据库元数据:DatabaseMetaData与ParameterMetaData与ResultSetMetaData...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言程序停止正常工作,C语言 由于出现
- 下一篇: linux cmake编译源码,linu