首页 > 其他 > 详细

元数据分析

时间:2015-03-25 15:31:49      阅读:318      评论:0      收藏:0      [点我收藏+]

元数据,是指仅拥有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中

  1. 用databaasemetadate分析数据库的数据

    版本

    厂家

    有多少张表

     

  2. @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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!