工作中经常用到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 封装例子 jdbc 封装例子 jdbc 封装例子 jdbc 封装例子
文档脉络清楚的详述了实现JDBC封装所需要进行的步骤。
一个完整的JDBC封装类,帮助我们更快的编程
Java JDBC封装类,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类使用。
实现完全的对jdbc对象的封装,只需调用则可对数据库进行CRUD操作
jdbc封装处理类 jdbc封装处理类
java增删改查JDBC封装类(泛型封装),这个是高度封装化的,增删改查,直接用到我的项目中去的。
Scweery 是 Scala 一个封装了 JDBC 操作用来从 SQL 中创建 Scala 对象的工具包。 示例代码: using(petsDB) { connection => val findHogsQuery = "select name, gender from pets where family='erinaceidae' ...
现在的数据层的开发,大多会使用...但是在一些极端的场景下往往原生的jdbc方式操作数据库更灵活,性能更高。由于部分场景下MyBatis或JPA之类无法满足我的需求,所以我打算自己封装一套查数据库的工具类。 文章地址: ...
Java JDBC封装类升级版,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类...
自己封装好的,基于commons的DBBase,DBCP的数据库工具。支持线程池,支持直接对象化操作。即无需任何映射,只要是java标准类,属性带标准set、get,属性名称与查询结果集中字段名称相同,就可以直接查询出对象链表...
类似hibernate的jdbc简单封装,说不定大家用的上。。
游戏服务器 数据库连接池 jdbc 简单封装
自己做的封装,简单一点,源代码, 到吗简单易懂,只需修改几个参数就
简单的jdbc封装,添加了详细的注视内容。更容易理解。
关于jdbc封装的知识,适合于java的初学者和工作人员。