工作中经常用到jdbc,嫌每次创建连接麻烦。自己简单的封装了下,也没有测试,不知道能不能用。
package com.geap.utils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import javax.sql.RowSet;
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl; //com.sun.rowset.jar包
/**
* jdbc工具类,提供了三个方法
* <ul>
* <li>execute(sql)</li>
* <li>executeQuery(sql)</li>
* <li>executeUpdate(sql)</li>
* </ul>
* @author QiuLu
*/
public class JdbcUtil {
/**
* 查询
* @param sql sql语句
* @return RowSet 离线结果集(CachedRowSet接口,CachedRowSetImpl实现)
* @throws Exception
*/
public static RowSet executeQuery(String sql) throws Exception{
Context ctx = null;
DataSource ds = null;
Connection cn = null;
Statement st = null;
ResultSet rs = null;
CachedRowSet crs = null;
try {
ctx = new InitialContext();
crs = new CachedRowSetImpl();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/OracleDS");
cn = ds.getConnection();
st = cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = st.executeQuery(sql);
crs.populate(rs);
return crs;
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if(rs != null)
try {
rs.close();
} catch ( Exception e) {
e.printStackTrace();
}
if(st != null)
try {
st.close();
} catch ( Exception e) {
e.printStackTrace();
}
if(cn != null)
try {
cn.close();
} catch ( Exception e) {
e.printStackTrace();
}
if(ctx != null)
try {
ctx.close();
} catch ( Exception e) {
e.printStackTrace();
}
}
}
/**
* 执行sql
* @param sql sql语句
* @return 如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false
* @throws SQLException
*/
public static boolean execute(String sql) throws SQLException{
Context ctx = null;
DataSource ds = null;
Connection cn = null;
Statement st = null;
ResultSet rs = null;
try {
ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/OracleDS");
cn = ds.getConnection();
st = cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
return st.execute(sql);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if(rs != null)
try {
rs.close();
} catch ( Exception e) {
e.printStackTrace();
}
if(st != null)
try {
st.close();
} catch ( Exception e) {
e.printStackTrace();
}
if(cn != null)
try {
cn.close();
} catch ( Exception e) {
e.printStackTrace();
}
if(ctx != null)
try {
ctx.close();
} catch ( Exception e) {
e.printStackTrace();
}
}
}
/**
* 执行更新
* @param sql sql语句
* @return (1) 对于 SQL 数据操作语言 (DML) 语句,返回行计数 (2) 对于什么都不返回的 SQL 语句,返回 0
* @throws SQLException
*/
public static int executeUpdate(String sql) throws SQLException{
Context ctx = null;
DataSource ds = null;
Connection cn = null;
Statement st = null;
ResultSet rs = null;
try {
ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/OracleDS");
cn = ds.getConnection();
st = cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
return st.executeUpdate(sql);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if(rs != null)
try {
rs.close();
} catch ( Exception e) {
e.printStackTrace();
}
if(st != null)
try {
st.close();
} catch ( Exception e) {
e.printStackTrace();
}
if(cn != null)
try {
cn.close();
} catch ( Exception e) {
e.printStackTrace();
}
if(ctx != null)
try {
ctx.close();
} catch ( Exception e) {
e.printStackTrace();
}
}
}
}
// 调用JdbcUtil.executeQuery()
public List getList() {
RowSet crs = null;
List<E> list = new ArrayList<E>();
try {
crs = JdbcUtil.executeQuery("select * from user");
while(crs.next()){
// todo
list.add();
}
return list;
} catch (Exception e) {
e.printStackTrace();
} finally{
if(crs != null)
try {
crs.close();
} catch ( Exception e) {
e.printStackTrace();
}
}
return null;
}
分享到:
相关推荐
JDBC封装的工具类,将所有共同的代码提取过来,形成工具类
jdbc封装工具类,此类事封装成list,Object>>格式,可直接把转换为jsonArray格式传输数据。
jdbc封装(实现对实体的增删改查[分页]),辅助学习Hibernate 包含三个文件夹,分别是: code-access实现 是用access实现的,本意是access方便,就一个文件,方便部署。但access有好多不支持,就写成这样.主要是可参考Dao...
标题:JDBC封装类 描述:此文章将详细介绍一个用于简化Java中JDBC操作的封装类,该类通过提供一系列方法来加速数据库编程任务,包括建立数据库连接、执行查询、处理结果集以及执行更新操作。 ### 一、JDBC封装类...
"JDBC封装"是指将常见的数据库操作,如增删改查(CRUD:Create, Read, Update, Delete),进行模块化和抽象化的过程,以便于在代码中重复使用和简化数据库交互。下面将详细介绍JDBC封装的原理、步骤以及它带来的好处...
【标题】:JDBC封装包 【描述】:JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。这个封装包是我个人制作的,旨在简化...
文档脉络清楚的详述了实现JDBC封装所需要进行的步骤。
"java增删改查JDBC封装类(泛型封装)"这个主题是关于如何利用泛型来优化JDBC操作,以提高代码的可读性、安全性和复用性。以下将详细讲解这个主题涉及的知识点。 1. **JDBC基础**: - JDBC是Java中连接数据库的标准...
Java JDBC封装类,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类使用。
实现完全的对jdbc对象的封装,只需调用则可对数据库进行CRUD操作
**标题:“自己写个JDBC封装”** 在Java开发中,JDBC(Java Database Connectivity)是连接Java应用程序和关系数据库的标准接口。然而,原始的JDBC API使用起来相对繁琐,需要编写大量的重复代码,例如建立数据库...
Scweery 是 Scala 一个封装了 JDBC 操作用来从 SQL 中创建 Scala 对象的工具包。 示例代码: using(petsDB) { connection => val findHogsQuery = "select name, gender from pets where family='erinaceidae' ...
Java JDBC封装类升级版,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类...
标题提到的"类似hibernate的jdbc封装"就是这样的一个实践,它试图在不引入庞大框架的情况下,提供类似Hibernate的便捷性。 首先,我们来了解JDBC(Java Database Connectivity),它是Java中用于连接数据库的标准...
现在的数据层的开发,大多会使用...但是在一些极端的场景下往往原生的jdbc方式操作数据库更灵活,性能更高。由于部分场景下MyBatis或JPA之类无法满足我的需求,所以我打算自己封装一套查数据库的工具类。 文章地址: ...
自己封装好的,基于commons的DBBase,DBCP的数据库工具。支持线程池,支持直接对象化操作。即无需任何映射,只要是java标准类,属性带标准set、get,属性名称与查询结果集中字段名称相同,就可以直接查询出对象链表...
在实际应用中,这些步骤往往重复且繁琐,因此进行JDBC封装是提高代码复用性和减少错误的有效方式。 1. **加载驱动**: 在Java程序中,我们需要通过Class.forName()方法加载对应的数据库驱动。封装时,我们可以将...
"jdbc-utils.rar_Utils_jdbc_jdbc封装"这个压缩包提供了一些工具类,用于简化JDBC操作,提高代码的可读性和可维护性。下面我们将详细探讨JDBC封装处理类的原理和实现。 1. **JDBC基础** - JDBC API包括一组Java...
本压缩包“DB.rar_jdbc封装”显然是一个关于如何使用Java JDBC进行数据库连接封装的示例或教程。下面我们将详细探讨JDBC以及如何进行封装。 首先,JDBC是Java平台上的一个接口,它允许Java应用程序与各种数据库进行...