将JDBC ResultSet结果集转成List

背景:

之前想要将数据库中的记录转化成List,需要对ResultSet中的数据根据不用的数据类型,用get方法进行获取;

现在通过使用ResultSet中的元数据信息,自动根据数据类型进行相关数据的取出;

避免了每次判断类型这样的繁琐操作;

实现:

  1. private static List<List<Object>> list = new ArrayList<List<Object>>();
  2. public static String queryAll() {
  3. Connection conn = null;
  4. Statement sta = null;
  5. ResultSet rs = null;
  6. try {
  7. PhoenixDB pDB = new PhoenixDB();
  8. conn = pDB.getConn();
  9. sta = conn.createStatement();
  10. rs = sta.executeQuery("select * from tb");
  11. ResultSetMetaData md = rs.getMetaData(); //获得结果集结构信息,元数据
  12. int columnCount = md.getColumnCount(); //获得列数
  13. while (rs.next()) {
  14. List<Object> l = new ArrayList<Object>();
  15. for (int i = 1; i <= columnCount; i++) {
  16. l.add(rs.getObject(i));
  17. }
  18. list.add(l);
  19. }
  20. } catch (SQLException e) {
  21. e.printStackTrace();
  22. }
  23. return "success";
  24. }
时间: 2024-10-09 16:08:20

将JDBC ResultSet结果集转成List的相关文章

将JDBC ResultSet结果集变成List

private List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); public String queryAll() { Connection conn = null; Statement sta = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); con

JDBC ResultSet 可更新的结果集

接着上一篇:可滚动的结果集: 1)com.microsoft.sqlserver.jdbc.SQLServerException: 结果集不可更新. 当concurrency设置为:ResultSet.CONCUR_READ_ONLY(默认)时,结果集不能更新数据,否则会报 SQLServerException 示例: statement = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_R

JDBC ResultSet 可滚动的结果集

可滚动的结果集 1)com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作. 当type设置为:ResultSet.TYPE_FORWARD_ONLY(默认)时,游标是不能任意移动的,只能逐步向前,否则会报 SQLServerException 示例: statement = con.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_XXX)

JDBC 入门 - 结果集

ResultSet (结果集) RSType 和 RSConcurrency 当对数据库进行查询操作的时候, 数据库返回的数据通过 ResultSet 接口获取. ResultSet 内部管理了一个 cursor(游标), cursor 指向当前要读的数据, ResultSet 提供了以下三类接口: 游标移动接口, 用来操作移动游标. 获取数据接口, 用来从当前游标指向位置的数据 更新数据接口, 用来更新当前游标指向位置的数据, 并可以更改对应数据库中的数据. ResultSet 的类型: 在创

使用ResultSet结果集查询数据

直接上下代码: 1 package com.learn.jdbc.chap05; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.util.ArrayList; 7 import java.util.List; 8 9 import com.learn.jdbc.model.Album; 10 import com.lea

com.microsoft.sqlserver.jdbc.SQLServerException: 结果集没有当前行

参考博客com.microsoft.sqlserver.jdbc.SQLServerException: 结果集没有当前行 java获取结果集,if(rs!=null),和while(rs.next())区别  com.microsoft.sqlserver.jdbc.SQLServerException: 结果集没有当前行. st = conn.createStatement(); ResultSet rs = st.executeQuery(sql); if(rs!=null) {//rs.

java jdbc ResultSet结果通过java反射赋值给java对象

在不整合框架的情况下,使用jdbc从数据库读取数据时都得一个个的get和set,不仅累代码还显得不简洁,所以利用java的反射机制写了一个工具类,这样用jdbc从数据库拿数据的时候就不用那么麻烦了. 因为很多情况下数据不止一条,所以返回的是对象类的一个集合. 需要注意的地方:在这里,数据库字段命名格式为:user_name 下划线格式,而java类型的命名格式为驼峰命名格式. 具体代码如下: package com.xc.sap.util; import java.sql.Connection;

使用SQL SERVER FOR XML PATH将多个结果集转换成一行并进行去重处理

在一个医药行业的系统中需要根据患者的接触记录ID获取不同接触类型的集合,效果像这样 --患者接触记录信息,一个患者可以有N个不同的接触记录,每个接触记录又有N个接触类型记录 IF OBJECT_ID ('dbo.TEST') IS NOT NULL DROP TABLE dbo.TEST GO CREATE TABLE dbo.TEST ( ID INT IDENTITY (1000,1) NOT NULL, cid INT,--接触记录号 REMARK VARCHAR (4000), CONT

apache与tomcat负载集群集成方法配置

apache与tomcat负载集群集成方法有3种jk.jk_proxy.http_proxy apache:httpd-2.2.17-win32-x86-no_ssl.msi tomcat:apache-tomcat-6.0.20.zip 安装apache http server省略,访问地址为http://127.0.0.1:8081 安装tomcat,解压apache-tomcat-6.0.20.zip,测试时我是把两个tomcat分开放在不同的虚拟机,其中一个是和apache同一台虚拟机.