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
原创粉丝点击