元(神)数据分析
元数据,是指仅拥有Connection一个对象的情况下,分析得出数据库的所有信息。
DataBaseMetadate - 说明数据库的信息。
ResultSetMetadate - 说明数据结果的类型信息的。核心。
如果要进行元数据分析,就必须要使用statement,preparedstatement.
DataBaseMetadate - 说明数据库的信息。
ResultSetMetadate - 说明数据结果的类型信息的。核心。
如果要进行元数据分析,就必须要使用statement,preparedstatement.
1、用databasemetadate分析数据库的数据
版本
厂家
有多少表
厂家
有多少表
将某个指定的数据库中的所有表及数据导出到excel中.
@Test
public void dbm() throws Exception{
Connection con = DataSourceUtils.getConn();
DatabaseMetaData dm= con.getMetaData();
// ResultSet rs= dm.getCatalogs();//获取所有数据库名称
// while(rs.next()){
// String name = rs.getString("TABLE_CAT");
// System.err.println(name);
// }
// System.err.println("======================");
String dbName = dm.getDatabaseProductName();//数据库名称
System.err.println(dbName);
System.err.println("数据库中有多少表:");
ResultSet rs2 = dm.getTables("db909","db909",null,new String[]{"TABLE"});
while(rs2.next()){
String tableName = rs2.getString("TABLE_NAME");
System.err.println(tableName);
}
}
2、用ResultSetMetadate分析结果集
此类是用来分析查询的结果集:
分析有几个列,列名,列的类型是什么?
分析有几个列,列名,列的类型是什么?
@Test
public void rs() throws Exception {
Connection con = DataSourceUtils.getConn();
// 转到exam数据库中去
Statement st = con.createStatement();
st.execute("use nrs");
// 查询
String sql = "select * from news";
ResultSet rs = st.executeQuery(sql);
// 对rs结果集进行分析
ResultSetMetaData rsmd=rs.getMetaData();
// 获取有几个列
int cols = rsmd.getColumnCount();
System.err.println(cols);
// 获取每一个字段名
List<String> colNames = new ArrayList<String>();// 保存所有的字段
for (int i = 0; i < cols; i++) {
String colName = rsmd.getColumnName(i + 1);
System.err.print(colName + "\t\t");
colNames.add(colName);
}
System.err.println();
// 获取数据
while (rs.next()) {
for (String nm : colNames) {// 遍历一行中的所列
String val = rs.getString(nm);
System.err.print(val + "\t\t");
}
System.err.println();
}
con.close();
}