使用原生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<Map<String, Object>>集合中,方便后续批量将该集合的数据插入到其他地方
整干货
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; }
到此这篇关于使用原生JDBC动态解析并获取表格列名和数据的文章就介绍到这了,更多相关JDBC获取表格列名和数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!