元数据分析

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

 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值