使用DatabaseMetaData.getColumns获取数据表的列名

紧跟上一篇帖子:https://blog.csdn.net/Min_Monk/article/details/93717421

这里介绍通过DatabaseMetaData.getColumns来获取表的列名

API方法介绍

/**
 * 得到全部列名
 * @param String catalog 类别名称;它必须与存储在数据库中的类别名称匹配;该参数为 "" 表示获取没有类别的那些描述;为 null 则表示该类别名称不应该用于缩小搜索范围
 * @param String schemaPattern 模式名称的模式;它必须与存储在数据库中的模式名称匹配;该参数为 "" 表示获取没有模式的那些描述;为 null 则表示该模式名称不应该用于缩小搜索范围
 * @param String tableNamePattern 表名称模式;它必须与存储在数据库中的表名称匹配
 * @param String columnNamePattern 列名称模式;它必须与存储在数据库中的列名称匹配
 * @return 每一行都是一个列描述
 * @throws SQLException 如果发生数据库访问错误
 */
ResultSet getColumns(String catalog,
                     String schemaPattern,
                     String tableNamePattern,
                     String columnNamePattern)
                     throws SQLException

实战Demo

public static void pageAllTableColumn(String tableNamePattern, int pageSize, int pageNum) {
        Connection conn = null;
        ResultSet rs = null;
        try {
            conn = JdbcUtils.getConnection();
            DatabaseMetaData dbmd = conn.getMetaData();
            rs = dbmd.getColumns(null, "CSBDEVW", tableNamePattern.toUpperCase(), "%");
            List<Map<String, Object>> tempList = new ArrayList<Map<String, Object>>();
            while(rs.next()) {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("COLUMN_NAME", rs.getString("COLUMN_NAME"));
                map.put("DATA_TYPE", rs.getString("DATA_TYPE"));
                map.put("TYPE_NAME", rs.getString("TYPE_NAME"));
                map.put("COLUMN_SIZE", rs.getString("COLUMN_SIZE"));
                map.put("NULLABLE", rs.getString("NULLABLE"));
                tempList.add(map);
                System.out.println(map);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != conn) {
                    conn.close();
                }
                if (null != rs) {
                    rs.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

 

 

 

 

 

Spring Boot 使用 JdbcTemplate 来操作数据库时,可以通过 JdbcTemplate 提供的方法来获取的属性和类型。一种常见的方法是利用 `DatabaseMetaData` 接口,该接口提供了关于数据库的结构和元数据信息。以下是使用 JdbcTemplate 获取的属性和类型的步骤: 1. 首先确保你的项目已经添加了 Spring Data JPA 或 JdbcTemplate 的依赖。 2. 获取 `DataSource`,这是连接数据库的关键。 3. 使用 `JdbcTemplate` 对象,通过 `DataSource` 创建连接。 4. 利用 `JdbcTemplate` 执行 SQL 查询,获取 `DatabaseMetaData`。 5. 使用 `DatabaseMetaData` 提供的方法,比如 `getColumns`,来获取特定的列信息。 以下是一个简单的代码示例,展示了如何获取指定的所有列信息: ```java import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.DatabaseMetaData; import javax.sql.DataSource; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; // 假设已经注入了 JdbcTemplate 和 DataSource @Autowired private JdbcTemplate jdbcTemplate; @Autowired private DataSource dataSource; // 获取的属性和类型的方法 public List<TableColumn> getTableColumns(String tableName) throws SQLException { List<TableColumn> columns = new ArrayList<>(); try (Connection connection = dataSource.getConnection()) { DatabaseMetaData dbMetaData = connection.getMetaData(); ResultSet rs = dbMetaData.getColumns(connection.getCatalog(), null, tableName, null); while (rs.next()) { String columnName = rs.getString("COLUMN_NAME"); String columnType = rs.getString("TYPE_NAME"); // 根据需要获取更多的列信息,例如数据类型大小,是否可为null等 // ... columns.add(new TableColumn(columnName, columnType)); } } return columns; } // 列的简单数据类 public class TableColumn { private String name; private String type; // 构造器、getter 和 setter public TableColumn(String name, String type) { this.name = name; this.type = type; } // ... } ``` 在这个示例中,我们定义了一个 `TableColumn` 类来简单地的列。`getTableColumns` 方法使用 `JdbcTemplate` 和 `DataSource` 来获取数据库的连接,并使用 `DatabaseMetaData` 获取的列信息。这些信息包括列名和数据类型名称,你可以根据需要从 `ResultSet` 中获取更多的列信息。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值