元数据,是指仅拥有Connection一个对象的情况下,分析得出数据库的所有信息。
DataBasemetadata:说明数据库的信息。
ResultSetMetadata:说明数据结果的类型信息。(核心)
如果要进行元数据分析,就必须要使用statement,preparedstatement
List<Map> list = run.query("select * from users",new MapListHandler());
其中list返回的结果形式如下:[{id="001",Name="Jack",pwd="ddd"},,,,,,]
List<Bean> list = run.query("select * from users",new BeanListHandler<User>(User.class));
[User=[id=dd],,,,,,]
将某个制定的数据库中的所有表及数据导出到excel中
用databaasemetadate分析数据库的数据
版本
厂家
有多少张表
@Test
public void db() throws Exception{
Connection con = DataSourceUtils.getConn();
DatabaseMetaData dm = con.getMetaData();
/*ResultSet rs = dm.getCatalogs();//获取所有数据库的名称
while(rs.next()){
String name = rs.getString(1);
System.out.println(name);
}
System.out.println("==========");*/
String dbName = dm.getDatabaseProductName();//获取数据库的名称
System.out.println(dbName);
System.out.println("数据库中有多少张表:");
ResultSet rs2 = dm.getTables("sakila", "sakila", null,new String[]{"TABLE"});//第一个字段和第二个字段表示数据库名,第三个字段指定表名,如果为null表示所有表,第四个字段表示类型( "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM". )
while(rs2.next()){
String tableName = rs2.getString(3);
System.out.println(tableName);
}
}2. 用ResultSetMetadate分析结果集
此类事用来分析查询的结果集:
分析有多少列,列名,列的类型是什么?
@Test
public void db2() throws Exception{
Connection con = DataSourceUtils.getConn();
//转到sakila数据库中去
Statement st = con.createStatement();
st.execute("use sakila");
String sql = "select * from actor";
ResultSet rs = st.executeQuery(sql);
//对rs结果集进行分析
ResultSetMetaData rsmd = rs.getMetaData();
//获取多少列
int cols = rsmd.getColumnCount();
System.out.println(cols);
//获取每一个字段名
List<String> colNames = new ArrayList<String>();//保存所有字段
for(int i=0;i<cols;i++){
String colName = rsmd.getColumnName(i+1);
System.out.print(colName+"\t\t");
colNames.add(colName);
}
//获取数据
while(rs.next()){
for(String nm:colNames){
String val = rs.getString(nm);
System.out.print(val+"\t\t");
}
System.out.println();
}
con.close();
}原文:http://my.oschina.net/duanvincent/blog/391555