-
jdbc封装求教30
我写了个JDBC封装类,现在在使用的过程中遇到点问题,希望各位指教,帮我解决此问题,具体问题如下:
其中的一个方法:/** * @description 执行查询sql,此处不能关闭statement,原因是如果在finally里关闭了statement,则resultSet也关闭了,怎么才能关闭它呢? * @param con * @param sql * @return */ public static ResultSet executeQuery(Connection con,String sql) { if(null == con) { throw new IllegalArgumentException("the parameter connection[con] is null !"); } Statement stm = null; try { stm = con.createStatement(); ResultSet result = stm.executeQuery(sql); return result; } catch (SQLException e) { try { con.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); getLogger().fatal("执行SQL["+sql+"]时出现异常!具体异常信息为: "+e.getMessage()); }
现在的问题就如注释,我需要在此封装类外使用这个方法,取完ResultSet的值后,需要关闭ResultSet以及Statement,不然创建的太多会大大影响性能。
请大家帮我看看,给我个解决方法,如果有好的JDBC封装类的话,发个给我,感激不尽,谢谢!
2010年1月30日 14:56
7个答案 按时间排序 按投票排序
-
采纳的答案
这样是否可以,只是写了大概代码,省去了异常捕获。核心思想就是JDBC的那些共用部分封装到一个类中,业务代码取数据的部分,以接口的形式传入进来。 /* * *此类只把JDBC的一些操作封装起来,没有和业务代码耦合。 *与接口WrapprIface进行一个rs的传递 */ class DBAccess { private Connection conn; public DBAccess(String ds){ conn = //find datasource and create conn } public void query(String sql, ArrayList paramsList, WrapprIface wrapper) { Preparements statement = conn.preparestatement(sql); if (paramsList != null && !paramsList.isEmpty()) { //设置进来参数 statement.set...... } Result rs = null; rs = statement.query(); //先这个类里,进行自己的业务逻辑,这样不会和JDBC耦合了。WrapprIface见下面的接口定义 wrapper.wrap(rs); finally { closeRsAndStatement(rs, statement); } } private void closeRsAndStatement(Result rs, Statement st) { //关闭这两个 } public void closeConnection() { this.conn.close(); } } /** *根据传入的Rs,取得需要数据,转换为指定的对象, *其它业务代码调用getRs(),再把指定对象取得。 */ interface WrapprIface { void wrap(Result rs); T getRs(); }
2010年1月31日 22:59
-
可以单独封装一个closeStatement方法和closeResultSet方法,必要的话,在关闭的时候再做一次判断,并且声明异常。
2010年1月30日 16:59
-
性能暂不要考虑,考虑下解耦吧。您可以将ResultSet封装成Map对象,返回Map。ResultSet就可以关闭了。
2010年1月30日 16:40
相关推荐
JDBC封装的工具类,将所有共同的代码提取过来,形成工具类
jdbc封装(实现对实体的增删改查[分页]),辅助学习Hibernate 包含三个文件夹,分别是: code-access实现 是用access实现的,本意是access方便,就一个文件,方便部署。但access有好多不支持,就写成这样.主要是可参考Dao...
jdbc封装工具类,此类事封装成list,Object>>格式,可直接把转换为jsonArray格式传输数据。
"JDBC封装"是指将常见的数据库操作,如增删改查(CRUD:Create, Read, Update, Delete),进行模块化和抽象化的过程,以便于在代码中重复使用和简化数据库交互。下面将详细介绍JDBC封装的原理、步骤以及它带来的好处...
标题:JDBC封装类 描述:此文章将详细介绍一个用于简化Java中JDBC操作的封装类,该类通过提供一系列方法来加速数据库编程任务,包括建立数据库连接、执行查询、处理结果集以及执行更新操作。 ### 一、JDBC封装类...
【标题】:JDBC封装包 【描述】:JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。这个封装包是我个人制作的,旨在简化...
文档脉络清楚的详述了实现JDBC封装所需要进行的步骤。
Java JDBC封装类,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类使用。
"java增删改查JDBC封装类(泛型封装)"这个主题是关于如何利用泛型来优化JDBC操作,以提高代码的可读性、安全性和复用性。以下将详细讲解这个主题涉及的知识点。 1. **JDBC基础**: - JDBC是Java中连接数据库的标准...
**标题:“自己写个JDBC封装”** 在Java开发中,JDBC(Java Database Connectivity)是连接Java应用程序和关系数据库的标准接口。然而,原始的JDBC API使用起来相对繁琐,需要编写大量的重复代码,例如建立数据库...
实现完全的对jdbc对象的封装,只需调用则可对数据库进行CRUD操作
Java JDBC封装类升级版,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类...
Scweery 是 Scala 一个封装了 JDBC 操作用来从 SQL 中创建 Scala 对象的工具包。 示例代码: using(petsDB) { connection => val findHogsQuery = "select name, gender from pets where family='erinaceidae' ...
"jdbc-utils.rar_Utils_jdbc_jdbc封装"这个压缩包提供了一些工具类,用于简化JDBC操作,提高代码的可读性和可维护性。下面我们将详细探讨JDBC封装处理类的原理和实现。 1. **JDBC基础** - JDBC API包括一组Java...
自己封装好的,基于commons的DBBase,DBCP的数据库工具。支持线程池,支持直接对象化操作。即无需任何映射,只要是java标准类,属性带标准set、get,属性名称与查询结果集中字段名称相同,就可以直接查询出对象链表...
现在的数据层的开发,大多会使用...但是在一些极端的场景下往往原生的jdbc方式操作数据库更灵活,性能更高。由于部分场景下MyBatis或JPA之类无法满足我的需求,所以我打算自己封装一套查数据库的工具类。 文章地址: ...
在实际应用中,这些步骤往往重复且繁琐,因此进行JDBC封装是提高代码复用性和减少错误的有效方式。 1. **加载驱动**: 在Java程序中,我们需要通过Class.forName()方法加载对应的数据库驱动。封装时,我们可以将...
本压缩包“DB.rar_jdbc封装”显然是一个关于如何使用Java JDBC进行数据库连接封装的示例或教程。下面我们将详细探讨JDBC以及如何进行封装。 首先,JDBC是Java平台上的一个接口,它允许Java应用程序与各种数据库进行...
标题提到的"类似hibernate的jdbc封装"就是这样的一个实践,它试图在不引入庞大框架的情况下,提供类似Hibernate的便捷性。 首先,我们来了解JDBC(Java Database Connectivity),它是Java中用于连接数据库的标准...