2014.12.09深度封装工具类
来源:互联网 发布:服务器网络配置自考 编辑:程序博客网 时间:2024/06/07 15:12
package com.hechao.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;/** * 数据库会话(封装数据库连接以及相关的操作) * @author hechao * */public class DbSession {// 最好的做法是将配置保存到配置文件中(可以用properteis或XML)private static final String DRV = "com.mysql.jdbc.Driver";private static final String URL = "jdbc:mysql://localhost:3306/bank";private static final String UID = "root";private static final String PWD = "123456";static {// 通过静态代码块加载数据库驱动try {Class.forName(DRV);}catch (ClassNotFoundException e) {throw new RuntimeException(e);}}private Connection con = null;/** * 打开连接 * @throws 无法建立连接时将抛出异常 */public void open() {if(con == null) {try {con = DriverManager.getConnection(URL, UID, PWD);}catch (SQLException e) {throw new RuntimeException(e);}}}/** * 关闭连接 * @throws 无法关闭连接时将抛出异常 */public void close() {try {if(con != null && !con.isClosed()) {con.close();// 释放数据库连接con = null;// 指示垃圾回收器可以回收此对象}}catch (SQLException e) {throw new RuntimeException(e);}}/** * 开启事务 * @throws 无法开启事务时将抛出异常 */public void beginTx() {if(con != null) {try {con.setAutoCommit(false);}catch (SQLException e) {throw new RuntimeException(e);}}}/** * 提交事务 * @throws 无法提交事务时将抛出异常 */public void commitTx() {if(con != null) {try {con.commit();}catch (SQLException e) {throw new RuntimeException(e);}}}/** * 回滚事务 * @throws 无法回滚事务时将抛出异常 */public void rollbackTx() {if(con != null) {try {con.rollback();}catch (SQLException e) {throw new RuntimeException(e);}}}/** * 执行更新语句 * @param sql SQL语句 * @param params 替换SQL语句中占位符的参数 * @return 多少行受影响 */public int executeUpdate(String sql, Object... params) {try {PreparedStatement ps = con.prepareStatement(sql);for(int i = 0; i < params.length; i++) {ps.setObject(i + 1, params[i]);}return ps.executeUpdate();}catch (SQLException e) {throw new RuntimeException(e);}}/** * 执行查询语句 * @param sql SQL语句 * @param params 替换SQL语句中占位符的参数 * @return 结果集(游标) */public ResultSet executeQuery(String sql, Object... params) {try {PreparedStatement ps = con.prepareStatement(sql);for(int i = 0; i < params.length; i++) {ps.setObject(i + 1, params[i]);}return ps.executeQuery();}catch (SQLException e) {throw new RuntimeException(e);}}}
0 0
- 2014.12.09深度封装工具类
- JDBC深度封装的工具类(具有高度的可重用性)
- JDBC深度封装的工具类 (具有高度可重用性)
- JDBC深度封装的工具类 (具有高度可重用性)
- jdbc封装工具类
- Calendar封装工具类
- XML工具封装类
- JDBC封装工具类
- CoreData封装工具类
- 缓存工具类封装
- FreemarkerUtil工具类封装
- SharedPreferences工具类封装
- java 封装工具类
- ImageLoader工具类封装
- sharedPreferences工具类封装
- 封装Servlet工具类
- https封装工具类
- 数据库工具类封装
- poj2388 简单排序——归并排序
- mac 安装SourceInsight
- 《数据结构》第五章 树和二叉树 知识总结导图
- (个人笔记)ID3DXAllocateHierarchy interface
- VIM--矩阵转置运算
- 2014.12.09深度封装工具类
- kail-linux 和win8.1 uefi 实录
- iOS App开发那些事:如何选择合适的人、规范和框架?
- 第15周 指针运算
- 暂留
- Java---10---多线程概述
- 全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?
- 【hdu 1300】pearl(需要深刻理解dp,同龟兔赛跑)
- java 中Long和Integer不得不知道的秘密