使用原生JDBC动态解析并获取表格列名和数据

news/2024/5/18 23:11:20 标签: java, JDBC, 数据库, mysql, 集合, map, jdk

应用场景

查询某张表,对于返回的执行结果,咱们并不需要知道他有哪些字段,字段名叫啥,直接通过原生JDBC动态的获取列名以及对应的数据。

其实就有点像遍历map集合,并不需要知道key叫啥,一样可以遍历出来:

java">Map<String,Object> map = Maps.newHashMap();
for (Map.Entry<String, Object> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
}

目标

数据库查询出来的结果,存放到一个List<Map<String, Object>>集合中,方便后续批量将该集合的数据插入到其他地方

整干货

java">private List<Map<String, Object>> executeQuery(String sqlStr,String url,String username,String password) {
		Connection connection = DriverManager.getConnection(url, username, password);
        Statement statement = null;
        ResultSet resultSet = null;

        List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();

        try {
            statement = connection.createStatement();
            resultSet = statement.executeQuery(sqlStr);

            final ResultSetMetaData rsmd = resultSet.getMetaData();
            final String[] columnName = new String[rsmd.getColumnCount()];
            for (int i = 1; i <= rsmd.getColumnCount(); ++i) {
                columnName[i - 1] = rsmd.getColumnLabel(i);
            }

            while (resultSet.next()) {
                LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
                for (int j = 1; j <= rsmd.getColumnCount(); ++j) {
                    if (resultSet.getObject(j) != null && !resultSet.getObject(j).equals("")) {
                        String columnData = resultSet.getObject(j).toString().trim();
                        map.put(columnName[j - 1], columnData);
                    }
                    else {
                        map.put(columnName[j - 1], "");
                    }
                }
                resultList.add(map);
            }
        } catch (SQLException e) {
            logger.error("SQL语句执行失败",e);
        }finally {
            if( null != resultSet ) {
                resultSet.close();
            }

            if( null != statement ) {
                statement.close();
            }
            if( null != connection ) {
                connection .close();
            }
        }
        return resultList;
    }

http://www.niftyadmin.cn/n/4958929.html

相关文章

营销活动:提升小程序的用户活跃度的关键

在现今竞争激烈的商业环境中&#xff0c;小程序已成为企业私域营销的重要工具之一。然而&#xff0c;拥有一个小程序并不足以保证用户的活跃度。营销活动作为推动用户参与的有效方式&#xff0c;对于提升小程序的用户活跃度起着至关重要的作用。本文将深入探讨营销活动在提升小…

ssm实验中心管理系统的设计与实现

ssm实验中心管理系统的设计与实现040 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 研究目的与意义&#xff1a; 随着高校硬件水平的提高和教学改革的深入&#xff0c;实验教学所占的地位越来越重要&#x…

行为型(一) - 观察者模式

一、概念 观察者模式&#xff08;Observer Pattern&#xff09;&#xff1a;在对象之间定义一个一对多的依赖&#xff0c;当一个对象状态改变的时候&#xff0c;所有依赖的对象都会自动收到通知。 二、实现 这里举个电视剧订阅的例子&#xff0c;比如琅琊榜&#xff0c;我们…

Pytorch-day05-可视化-checkpoint

PyTorch 可视化 1、模型结构可视化2、训练过程可视化3、模型评估可视化 #导入常用包 import os import numpy as np import torch from torch import nn from torch.utils.data import Dataset, DataLoader from torchvision.transforms import transforms import torchvis…

Redis系列(四):哨兵机制详解

首发博客地址 https://blog.zysicyj.top/ 前面我们说过&#xff0c;redis采用了读写分离的方式实现高可靠。后面我们说了&#xff0c;为了防止主节点压力过大&#xff0c;优化成了主-从-从模式 思考一个问题&#xff0c;主节点此时挂了怎么办 这里主从模式下涉及到的几个问题&a…

Python 驱动连接 OceanBase 数据库

安装 JayDeBeApi 驱动 pip3 install JayDeBeApi 待更新 Python 驱动连接 OceanBase 数据库_云数据库 OceanBase 版-阿里云帮助中心

css 实现四角边框样式

效果如图 此图只实现 左下与右下边角样式 右上与左上同理 /* 容器 */ .card-mini {position: relative; } /* 左下*/ .card-mini::before {content: ;position: absolute;left: 0;bottom: 0;width: 20px;height: 20px;border-bottom: 2px solid #253d64;border-left: 2px so…

解决Spring mvc + JDK17@Resource无法使用的情况

问题描述 我在使用jdk17进行Spring mvc开发时发现 Resource用不了了。 原因 因为JDK版本升级的改动&#xff0c;在Jdk9~17环境下&#xff0c;搭建Springboot项目&#xff0c;会出现原有Resource&#xff08;javax.annotation.Resource&#xff09;不存在的问题&#xff0c;导…