java如何封装ResultSet结果集

Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData、查询结果集映射Map与ListMap Java-JDBC【之】数据类型、封装JDBCUtil、封装通用增删改、ResultSet与ResultSetMetaData、查询结果集映射Map与ListMap 1.数据类型 2.封装通用增删改 2.1.封装JDBCUtil 2.2.封装Dao通用增删改 2.3.测试 3.ResultSet与ResultSetMetaData 4.查询对象映射Map 4.1.封装queryMap() 4.2.测试 5.查询结果集映射ListMap 5.1.封装queryListMap() 5.2.测试 6.完整源码 《 阅读详情

原理就是用Map存放单条数据然后放到List里
用起来可以这样调用 List list = rs.selectRS(sqlStr);
for(int i=0;i<list.size;i++)
{
    ((Map)list.get(i)).get("username");
}
这样的话就不用每次在写数据库连接了,而且有比较复杂的页面格式输出就可以通过对 i 的控制来实现了
下面是具体实现类可以结合struts,webwork2的标签来用,我已经测试过了没问题
我也看到一些人是自己写类来代替Map来用的

package com;
import conn.DBConnManager;
import java.sql.*;
import java.util.*;

public class ResultGather
{
private String sql;
public ResultGather()
{

}
public ResultGather(String sqlcom)
{
this.sql=sqlcom;
}
public List selectRS(String sqlStr)
{
this.sql = sqlStr;
return selectRS();
}
public List selectRS()
{
List rsall = new ArrayList();
Map rsTree;
DBConnManager conn = null;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try{
   conn = DBConnManager.getInstance();
   con = conn.getConnection("mssql");
   stmt = con.createStatement();
   rs = stmt.executeQuery(sql);
   ResultSetMetaData rsmd = rs.getMetaData();//取数据库的列名 我觉得名比1,2,3..更好用
   int numberOfColumns = rsmd.getColumnCount();
   while(rs.next())
   {
   rsTree = new HashMap(numberOfColumns);//注意要new
     for(int r=1;r<numberOfColumns+1;r++)
     {
      rsTree.put(rsmd.getColumnName(r),rs.getObject(r));
     }
     rsall.add(rsTree);
   }
  
}catch(java.lang.Exception ex){
   ex.printStackTrace();
}finally{
   try{
    if(rs!=null)
     rs.close();
    if(stmt!=null)
     stmt.close();
    if(conn!=null)
     conn.releaseConnection("mssql",con);
   }catch(Exception e){
   
   }  
}
return rsall;
}
}

 

封装数据库操作,目的就是为了隐藏java.sql包内的类,在编码中去掉核心的数据库操作代码。以杜绝直接数据库操作容易带来的资源未释放

问题。同时也减少了数据库操作的编码量。

但是很多网友在封装时,却喜欢返回结果集(ResultSet对象),那么这个封装就没有意义了。
1. 又是直接操作核心数据库类,跟封装前几乎没什么变化。
2. 结果集总是依赖于它使用的连接(Connection)对象。因此当连接对象在方法内被关闭后,你返回的ResultSet就没有用了。

如果真的要获得查询数据库的结果集,就把结果集对象内的所有数据,转储到以Map为元素的List对象内。
当然,这种方式,不能适应大数据量的查询,不过如果真的碰到大数据量的查询,那用什么封装都不好,还是得直接数据库操作. :)))

下面是简单的数据库操作Javabean的代码

DbWrapper.java
import java.sql.*;
import java.util.*;
public class DbWrapper
{
// 定义连接池对象为静态变量,将一直存在,直到工作目录关闭。
private static DataSource ds = null;
// 1.用连接池的方式获得连接
// 如果不是做多数据库程序,推荐使用此方法
// 相关内容:在tomcat管理界面配置连接池
public static Connection openConnection() throws Exception
{
// 只需要初始化1次
if ( ds == null )
{
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/MyDataSource");
}
return ds.getConnection();
}

// 2.用jdbc驱动获得连接
// 相关内容:JSP数据库连接大全
public static Connection openConnection(
String driver,
String url,
String username,
String password)
throws Exception
{
Class.forName(driver).newInstance();
return DriverManager.getConnection(url, username, password);
}

public static void closeConnection(Connection conn) throws Exception
{
if ( conn != null )
{
conn.close();
}
}
public static int executeUpdate(String sql) throws Exception
{
int count = 0;

Connection conn = null;
Statement stmt = null;

try
{
conn = openConnection();
stmt = conn.createStatement();

count = stmt.executeUpdate(sql);
}
catch ( Exception e )
{
throw e;
}
finally
{
closeConnection(conn);
}

return count;
}

public static List executeQuery(String sql) throws Exception
{
List list = new ArrayList();

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

try
{
conn = openConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);

ResultSetMetaData rsmd = rs.getMetaData();

while ( rs.next() )
{
Map map = new HashMap();

for ( int i = 1; i <= rsmd.getColumnCount(); i++ )
{
map.put(rsmd.getColumnName(i), rs.getObject(i));
}

list.add(map);
} }
catch ( Exception e )
{
e.printStackTrace();
}
finally
{
if ( rs != null ) rs.close();
closeConnection(conn);
}

return list; }
}

 

使用示例:
// 1.对于insert, update, delete语句int count = DbWrapper.executeUpdate(sql);
// 2.对于selete语句
java.util.List list = DbWrapper.executeQuery(sql);
// 方法一:按名字取值,注意大小写是严格区分的
for ( int i = 0; i < list.size(); i++ )
{
java.util.Map map = (java.util.Map)list.get(i);
out.println(mag.get("column_name").toString());
}
// 方法二:遍历取值
for ( int i = 0; i < list.size(); i++ )
{
java.util.Map map = (java.util.Map)list.get(i);
for (java.util.Iterator it = map.keySet().iterator(); it.hasNext();)
{
String column_name = it.next().toString()); // 取值时注意null判断
out.println(column_name + " = " + map.get(column_name) == null ? "" : map.get(column_name).toString());
}
}

避坑指南:CoppeliaSim逆运动学仿真常见报错解决方案(附UR5+RG2爪完整Lua脚本) 本文针对CoppeliaSim机器人仿真中常见的逆运动学报错问题,提供了详细的避坑指南和解决方案。文章以UR5机械臂与RG2夹爪组合为例,深入剖析了模型装配、Dummy节点配置、Lua脚本编写等关键步骤中的常见错误,并附带了完整的、带错误处理的脚本代码,帮助用户快速定位并解决IK仿真失败问题,提升仿真效率。 阅读详情

相关推荐

告别手动调参!PSCAD 4.2的Multiple-Run功能,5分钟搞定交流故障批量仿真

本文详细介绍了PSCAD 4.2的Multiple-Run功能如何高效处理交流故障批量仿真,告别传统手动调参的低效模式。通过五步配置法,工程师可在5分钟内完成数百次参数组合的仿真,显著提升电力系统分析效率。文章还包含工业级应用案例和高级调试技巧,助力实现故障仿真的自动化与智能化。

weixin_42552716的博客 275

Java-JDBC-ResultSet及查询记录对象(JavaBean)封装

Java-JDBC-ResultSet及查询记录对象(JavaBean)封装 目录 文章目录1、ResultSet2、JavaBean3、表 -> 对象集合4、查询表emp数据将其封装为对象,并装入集合返回***后记*** : 内容 1、ResultSet   ResultSet结果集对象,用于封装查询结果。 boolean next():游标向下移动一行,判断当前行是否是最后一行(末尾,是否还有数据),有则返回true;否则返回false; getXxx(参数):获取数据 Xxx

gaogzhen的博客 1304

Win10文件夹只读属性自动恢复?彻底解决方法解析

Win10文件夹只读属性自动恢复?彻底解决方法解析在Windows系统使用过程中,文件权限管理常会遇到棘手问题。最近多位用户反馈:取消文件夹只读属性后,系统却自动恢复该设置,导致无法正常复制或修改文件。本文将深入分析该现象的产生原因,并提供多种解决方案,帮助开发者彻底摆脱权限困扰。

mmoo_python的博客 7521

ResultSet:结果集对象,封装查询结果

代码实现 JDBC工具类链接:☞点此查看 数据库资源: /* SQLyog Ultimate v12.09 (64 bit) MySQL - 5.5.40 : Database - db2 ********************************************************************* */ /*!40101 SET NAMES utf8 */; /...

Coco的博客 619

2024年全国大学生电子设计竞赛A题_AC-AC变换电路并联运行

AC-AC变换电路并联运行(A 题)【本科组】

qq_74395263的博客 7836

DFT设计绪论

DFT设计的主要目的是为了将defect-free的芯片交给客户。 产品质量,通常使用Parts Per million(PPM)来衡量。 但是随着IC从SSI到VLSI的发展,在test上花销的时间越来越多,test的quality却很难提高,这使得DFT的engineer不断的发展着DFT的技术。 DFT engineer面对的第一个问题是设计内部的状态的可测试性问题。在...

ahr7882的博客 1195

【Java】将ResultSet封装为Bean对象

和其他的文章一样,也是利用反射封装,最后返回list集合 public class jdbcUtils { /** * MySQL数据库将result set风筝为Bean对象,需要数据库字段名和兵对象属性名一致(不区分大小写) * @param resultSet * @param beanClass * @param <T> * @return 返回Bean对象数组 * @throws Exception */

qq_46599129的博客 1960

EXCEL VBA从入门到精通 第一章:VBA入门

在VBA中,需要使用关键字Dim来定义一个变量,后面跟上变量名和变量的数据类型。例如,下面的代码定义了一个整型变量x和一个字符串变量name在VBA中,使用关键字Const来定义常量,后面跟上常量名和常量的值。例如,下面的代码定义了一个整型常量MAX_NUM和一个字符串常量MESSAGE需要注意的是,常量一旦被定义,其值就不能被改变。

1万+

List封装ResultSet

public List getDataObject(String sql) { Session session = null; Connection conn = null; Statement stmt = null; ResultSet rs = null; List list= new ArrayList(); Map map;

sniperwang的专栏 2817

全功能tgbot/Telegram机器人多功能有后台版源码

trx兑换 闪兑 关键字监控 群管 usdt监控 余额查询 推广分享 等几乎常见的tg机器人功能都有。全功能tgbot/telegram机器人多功能有后台版源码-打包好的可以直接上手。

百创科技 2701

116、影像质量主观评价方法论:标准场景与专家判读

本文探讨了影像质量主观评价的方法论,强调标准场景构建和专家判读体系的重要性。作者基于15年行业经验指出,仅靠客观指标无法保证观感质量,提出四类标准场景(灰阶、肤色、纹理、动态)的构建原则和四种专家判读维度(通透性、干净度、自然感、流程化)。文章揭示了主观评价中的常见误区,包括光源单一性、个人判读偏差、显示设备影响等,并建议建立多专家交叉验证机制和主观评价数据库。最后强调主观评价是可标准化的专业技术,需要将人眼感知转化为可追溯的技术参数。

sundong_81的博客 39

JDBC Resultset结果集对象, 封装查询结果

Resultset :结果集对象, 封装查询结果 boolean next(): 游标向下移动一行,判断当前行是否是最后一行末尾 (是否有数据),如果是,则返回false,如果不是则返回true getxxx(参数) :获取数据 xxx:代表数据类型 如: int getInt() ,String getstring() 参数: int :代表列的编号,从1开始 如: getstri...

七七的博客 1359

linux平台Modbus TCP测试

【代码】linux平台Modbus TCP测试。

无线互联&网络介绍 818

java resultset封装_resultset结果集封装为json的各种形式

1.操作JSON的JAR包如下:下载链接:http://download.youkuaiyun.com/detail/ruthywei/9876958 2.ResultSet--->JSONObject/*** 将resultSet转化为JSONObject* @param rs* @return* @throws SQLException* @throws JSONException*/public ...

weixin_42513365的博客 393

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java resultset封装_java实现将结果集封装到List中的方法

本文实例讲述了java实现将结果集封装到List中的方法。分享给大家供大家参考,具体如下:import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.Lis...

weixin_36483050的博客 492

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java resultset封装_jdbc 将ResultSet的结果集封装到java bean中,结果只封装了第一条数据,以下是封装一条数据到一个bean中去...

publicClasstoEntity(ResultSetrs,Classclazz){Fieldfield=null;Classt=null;//取得类里边的所有方法try{//取得ResultSet列名ResultSetMetaDatarsmd=rs.getMetaData();//获取记录集中...public Class toEntity(ResultSet rs,Class clazz)...

weixin_30990387的博客 290

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

怎能将ResultSet结果集返回给一个数组?

public String[] search(){ List list = new ArrayList(); String sql = "select name from user" ; try { conn = DBUtil.getConnection();//连接数据库的 ps = conn.prepareStatement(sql); ResultSet

georgelife7的专栏 1596

java.sql.ResultSet接口: 结果集(客户端存表数据的对象)

a、封装结果集的。 提供一个游标,默认游标指向结果集第一行之前。 调用一次next(),游标向下移动一行。 提供一些get方法。   封装数据的方法 Object getObject(int columnIndex); 根据序号取值,索引从1开始 Object getObject(String ColomnName); 根据列名取值。   将结果集中的数据封装到javaBean中

qq_39046746的博客 1514

mysql jdbc resultset_JDBC——ResultSet结果集对象

ResultSet结果集对象,封装结果。它是怎么做到封装结果的呢?游标,类似指针索引最初指在“列名”上,要取到数据就需要让游标向下移动移动后就指向了第一行数据,然后通过一些方法把第一行的每一列都取出来。一次只能获取一行中的一列数据这个过程就涉及到了两类方法,移动和获取移动:next():游标向下移动一行,判断当前行是否为最后一行(判断是否有数据)。如果是返回false,不是则返回ture获取:ge...

weixin_33168937的博客 772

将JDBC ResultSet结果集转成List

ResultSet简介:ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法(这些get方法可以访问当前行中的不同列) 提供了对这些行中数据的访问。ResultSet.next方法用于移动到ResultSet中的下一行,使下一行成为当前行。 上面的rs.getObject(i) 即是获得这一行的数据值 ResultSetMetaData rsmd=rs.getMetaData(); 1、getColumCount()方法 返回所有字段的数目 2、getColumName(

itmyhome的专栏 4万+

JDBC —— ResultSet对象

ResultSet对象:结果集对象(封装从数据库里面查询出来的结果集) 常用方法如下: next();//游标向下移动一行 getXxx(参数);//获取数据 //Xxx代表想要获取数据的类型如: getInt(参数); //参数有两种情况: 1.int:代表数据表列的编号,从1开始:如getString(1) 2.String:代表数据库里面的字段名称(列名称)。如:getInt(age)//a...

weixin_45098998的博客 377

mysql resultset 多结果集_将ResultSet中得到的一行或多行结果集封装成对象的实例...

首先说一下这个使用场景,我们在使用jdbc连接数据库的时候,执行查询语句时候会得到一个结果集,如果想要再获取这个结果集中的值,就需要我们将他转换成一个对象,然后通过对象的get和set方法来获取到数据库中的值。public class BaseDao {private Class> cls;public BaseDao() {//得到父类的泛型Type sType=getClass().g...

weixin_35651612的博客 756

java实现将结果集封装到List中的方法

这篇文章主要介绍了java实现将结果集封装到List中的方法,涉及java数据库查询及结果集转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了java实现将结果集封装到List中的方法。分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

fu_manxing的专栏 9225

java中把list结果集显示出来_java实现将结果集封装到List中的方法

本文实例讲述了java实现将结果集封装到List中的方法。分享给大家供大家参考,具体如下:import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.Lis...

weixin_35785909的博客 335

jdbc sql 的执行结果resultset 包装为List

平时我们使用jdbc的时候经常需要把resultset-->List,以被其他层调用,其实我们使用o/r开源工具Torque,hibernate就有类似包装好的,非常好用.import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method; //返回方法import java.sql.Connec

蒋剑锋的专栏-java技术 4472

java resultset封装_Java把ResultSet封装Bean(利用xml mapping和BeanProcessor.toBean())

1. mapping xml fileencoding="UTF-8"?>class="com.persistent.Rpt1Info">name="instituteCode" db="INSTITUTE_CODE" />name="branchCode" db="BRANCH_CODE" />name="txnDate" db="TXN_DATE" />class...

weixin_39564151的博客 285
上一篇: 极品经典!悟透JavaScript
下一篇: 初学者如何开发出一个高质量的J2EE系统
Java_Cowboy
博客等级 码龄19年 59粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值