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

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

应用场景

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

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

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

目标

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

整干货

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;
    }


相关文章
|
1月前
|
安全 Java 数据库连接
jdbc解析excel文件,批量插入数据至库中
jdbc解析excel文件,批量插入数据至库中
21 0
|
1月前
|
XML 前端开发 数据格式
请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
【2月更文挑战第22天】【2月更文挑战第67篇】请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
|
2天前
|
存储 NoSQL 安全
Redis入门到通关之数据结构解析-动态字符串SDS
Redis入门到通关之数据结构解析-动态字符串SDS
|
5天前
|
JavaScript 前端开发 UED
深入解析JavaScript原生操作DOM技术
【4月更文挑战第22天】本文深入探讨JavaScript原生DOM操作技术,包括使用`getElement*`方法和CSS选择器获取元素,借助`createElement`与`appendChild`动态创建及插入元素,修改元素内容、属性和样式,以及删除元素。通过掌握这些技术,开发者能实现页面动态交互,但应注意避免过度操作DOM以优化性能和用户体验。
|
15天前
|
存储 JSON JavaScript
「Python系列」Python JSON数据解析
在Python中解析JSON数据通常使用`json`模块。`json`模块提供了将JSON格式的数据转换为Python对象(如列表、字典等)以及将Python对象转换为JSON格式的数据的方法。
31 0
|
1月前
|
安全 Java 数据库连接
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)
154 0
|
1月前
|
存储 JSON NoSQL
Redis与Python的完美结合:实现高效数据交互和应用场景全解析
Redis与Python的完美结合:实现高效数据交互和应用场景全解析
115 0
|
2天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
|
10天前
yolo-world 源码解析(六)(2)
yolo-world 源码解析(六)
20 0
|
10天前
yolo-world 源码解析(六)(1)
yolo-world 源码解析(六)
14 0

推荐镜像

更多