zoukankan      html  css  js  c++  java
  • 获取数据库表结构信息(表名称和字段名称等元数据)

    假定已经获取到了某数据库的连接,下面根据此连接获取该数据库的所有表名称和及表字段信息:

     1 import io.xbs.common.utils.R;
     2 import io.xbs.datasource.config.DynamicDataSource;
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.web.bind.annotation.GetMapping;
     5 import org.springframework.web.bind.annotation.RequestMapping;
     6 import org.springframework.web.bind.annotation.RestController;
     7 
     8 import java.sql.Connection;
     9 import java.sql.DatabaseMetaData;
    10 import java.sql.ResultSet;
    11 import java.sql.SQLException;
    12 import java.util.ArrayList;
    13 import java.util.List;
    14 
    15 /**
    16  * 获取数据库表结构信息
    17  *
    18  * @author shiyanjun
    19  */
    20 @RestController
    21 @RequestMapping("/app")
    22 public class AppTestController {
    23 
    24     @Autowired
    25     private DynamicDataSource dataSource;
    26 
    27     @GetMapping("dbTest")
    28     public R dbTest() {
    29         try {
    30             Connection conn = dataSource.getConnection();
    31 
    32             // 获取所有的表
    33             List<String> tables = getTables(conn);
    34             System.out.println("---------------获取" + conn.getCatalog() + "库的所有表名----------------");
    35             System.out.println(tables);
    36 
    37             // 获取表字段
    38             for (String table : tables) {
    39                 List<String> columns = getColumns(conn, table);
    40                 System.out.println("---------------获取" + table + "表的所有字段----------------");
    41                 System.out.println(columns);
    42             }
    43         } catch (SQLException e) {
    44             e.printStackTrace();
    45         }
    46         return R.ok();
    47     }
    48 
    49     /**
    50      * 获取数据库中所有的表名称
    51      *
    52      * @param conn 数据库的连接
    53      * @return 该数据库中所有的表名称
    54      * @throws SQLException
    55      */
    56     private List<String> getTables(Connection conn) throws SQLException {
    57         DatabaseMetaData metaData = conn.getMetaData();
    58         ResultSet resultSet = metaData.getTables(conn.getCatalog(), "%", null, new String[]{"TABLE"});
    59         List<String> tables = new ArrayList<>();
    60         while (resultSet.next()) {
    61             String tableName = resultSet.getString("TABLE_NAME");
    62             tables.add(tableName);
    63         }
    64         return tables;
    65     }
    66 
    67     /**
    68      * 获取指定表的所有字段名称
    69      *
    70      * @param conn      数据库连接
    71      * @param tableName 表名称
    72      * @return 该表所有的字段名称
    73      * @throws SQLException
    74      */
    75     private List<String> getColumns(Connection conn, String tableName) throws SQLException {
    76         DatabaseMetaData metaData = conn.getMetaData();
    77         ResultSet rs = metaData.getColumns(conn.getCatalog(), null, tableName, null);
    78         List<String> columns = new ArrayList<>();
    79         while (rs.next()) {
    80             String name = rs.getString("COLUMN_NAME");
    81             columns.add(name);
    82         }
    83         return columns;
    84     }
    85 }
  • 相关阅读:
    查看网桥
    openstack 网卡
    fuel3.2安装
    whereis命令查看你要添加的软件在哪里
    ubuntu12.04开启远程桌面
    ubuntu 右键添加terminal
    本地源设置方法:
    ubuntu的dns设置
    chubu
    Linux内存
  • 原文地址:https://www.cnblogs.com/jun1019/p/11783834.html
Copyright © 2011-2022 走看看