JDBC获取数据库列名-关于 ResultSet 对象中列的类型和属性信息

简介: JDBC获取数据库列名-关于 ResultSet 对象中列的类型和属性信息

需求背景:用户可以查询数据库中所有表的列名和数据进行展示

连接数据库并查询数据

public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        try {
            String url = "jdbc:postgresql://**:**/test";
            Class.forName("org.postgresql.Driver");
            connection= DriverManager.getConnection(url, "**", "**");
            String sql ="select * from table limit 2 offset 0";
            statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(sql);
            convertList(resultSet);
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

获取ResultSet 对象中列的类型和属性信息

private static List<Map<String, ?>> convertList(ResultSet rs) throws SQLException {
  List<Map<String, ?>>  list = new ArrayList<>();
  while (rs.next()) {
      ResultSetMetaData md = rs.getMetaData();//获取键名即列名
      int columnCount = md.getColumnCount();//获取列的数量
      Map<String, Object> orderedRecords = new LinkedHashMap<>();
      for (int i = 1; i <= columnCount; i++) {
      System.out.println(md.getColumnName(i) + "---" + rs.getObject(i));
      orderedRecords.put(md.getColumnName(i), rs instanceof BigInteger ? ((BigInteger) rs).longValue() : rs);
    }
  list.add(orderedRecords);
  }
  return list;
}

更多使用及方法可参考:oracle官网

目录
相关文章
|
Java 数据库连接 数据库
【YashanDB知识库】jdbc查询st_geometry类型的数据时抛出YAS-00101 cannot allocate 0 bytes for anlHeapMalloc异常
【YashanDB知识库】jdbc查询st_geometry类型的数据时抛出YAS-00101 cannot allocate 0 bytes for anlHeapMalloc异常
|
Java 数据库连接
【YashanDB知识库】JDBC驱动的date类型字段结果集调用getString方法只返回日期,不返回时分秒
【YashanDB知识库】JDBC驱动的date类型字段结果集调用getString方法只返回日期,不返回时分秒
|
存储 安全 数据库
数据库的索引都有哪些类型?如何选择?
【8月更文挑战第17天】数据库的索引都有哪些类型?如何选择?
1347 0
|
Java 数据库连接 数据库
【YashanDB 知识库】jdbc 查询 st_geometry 类型的数据时抛出 YAS-00101 cannot allocate 0 bytes for anlHeapMalloc 异常
**简介:** 客户在使用 YashanDB JDBC 驱动查询含 st_geometry 列的数据时,遇到 YAS-00101 错误,提示无法分配内存。该问题影响所有版本的 YashanDB,导致业务中断。原因是用户缺少对 st_geometry 类型的 execute 权限。解决方法是为用户赋权:`grant execute any type to &lt;username&gt;;` 以恢复正常运行。
|
Java 数据库连接
【YashanDB 知识库】JDBC 驱动的 date 类型字段结果集调用 getString 方法只返回日期,不返回时分秒
**问题简介:** 在使用 JDBC 驱动查询 YashanDB 的 date 类型字段时,直接调用 ResultSet 的 getString 方法仅返回 YYYY-MM-DD 格式的日期字符串,缺少时分秒信息,影响业务逻辑。此问题存在于所有 YashanDB 驱动版本,原因是驱动内部实现问题。解决方法包括使用 `rs.getTimestamp(1).toString()` 或在 JDBC 连接串中添加 `mapDateToTimestamp=true` 参数。 **风险及影响:** 返回的字符串只有日期部分,缺失时间信息,可能导致业务逻辑异常。
|
Java 数据库连接 数据库
【YashanDB 知识库】jdbc 查询 st_geometry 类型的数据时抛出 YAS-00101 cannot allocate 0 bytes for anlHeapMalloc 异常
**问题简介:** 客户使用 YashanDB JDBC 驱动查询含 st_geometry 列的数据时,出现 YAS-00101 错误,提示无法分配 0 字节内存。该问题影响所有 YashanDB 版本,导致业务中断。原因是数据库用户缺少 st_geometry 类型的 execute 权限。解决方法是为用户赋权:`grant execute any type to &lt;username&gt;;`。
|
Java 数据库连接
【YashanDB 知识库】JDBC 驱动的 date 类型字段结果集调用 getString 方法只返回日期,不返回时分秒
**问题简介:** 在使用 JDBC 驱动查询 YashanDB 中的 date 类型字段时,直接调用 ResultSet 的 getString 方法仅返回日期部分(YYYY-MM-DD),缺少时分秒信息,影响业务逻辑。此问题存在于所有 YashanDB 驱动版本,原因是驱动内部实现问题。解决方法:使用 `rs.getTimestamp(1).toString()` 或在连接串中增加 `mapDateToTimestamp=true` 参数。 **风险及影响:** 返回字符串缺少时分秒,可能导致业务逻辑错误。 **受影响版本:** 所有 YashanDB 驱动版本。
|
存储 移动开发 数据库
HTML5 Web IndexedDB 数据库常用数据存储类型
IndexedDB 支持多种数据存储类型,满足复杂数据结构的存储需求。它包括基本数据类型(如 Number、String、Boolean、Date)、对象(简单和嵌套对象)、数组、Blob(用于二进制数据如图像和视频)、ArrayBuffer 和 Typed Arrays(处理二进制数据)、结构化克隆(支持 Map 和 Set 等复杂对象),以及 JSON 数据。尽管不直接支持非序列化数据(如函数和 DOM 节点),但可以通过转换实现存储。开发者应根据具体需求选择合适的数据类型,以优化性能和使用体验。
1059 10
|
数据采集 DataWorks 安全
DataWorks产品使用合集之如何判断数据库类型是否支持整库
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
228 2
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。