JavaWeb常用工具类:数据库操作DataSourceUtils

操作数据库,本代码参考的是我看的视频。。。。

数据库技术:c3p0 也就是说要使用这个工具类你必须引入C3p0的jar包和配置文件
先自行百度吧我有时间就传上来、、
直接先上代码:

public class DataSourceUtils {
private static ComboPooledDataSource ds = new ComboPooledDataSource();
private static ThreadLocal<Connection> tl=new ThreadLocal<>();

/**
 * 从线程中获取连接
 * @return
 * @throws SQLException
 */
public static Connection getConnection() throws SQLException {
    //从线程中获取conneciton
    Connection conn = tl.get();
    if(conn==null){
        conn=ds.getConnection();
        //和当前线程绑定
        tl.set(conn);
    }
    return conn;
}

// 获取数据源
public static DataSource getDataSource() {
    return ds;
}

// 释放资源
public static void closeResource( Statement st, ResultSet rs) {
    closeResultSet(rs);
    closeStatement(st);
}

// 释放资源
public static void closeResource(Connection conn, Statement st, ResultSet rs) {
    closeResource(st, rs);
    closeConn(conn);
}

// 释放 connection
public static void closeConn(Connection conn) {
    if (conn != null) {
        try {
            conn.close();
            //和线程解绑
            tl.remove();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        conn = null;
    }
}

// 释放 statement ctrl + shift + f 格式化代码
public static void closeStatement(Statement st) {
    if (st != null) {
        try {
            st.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        st = null;
    }
}

// 释放结果集
public static void closeResultSet(ResultSet rs) {
    if (rs != null) {
        try {
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        rs = null;
    }
}


//开启事务
public static void startTransaction() throws SQLException{
    getConnection().setAutoCommit(false);
}

/**
 * 事务提交且释放连接
 */
public static void commitAndClose(){
    Connection conn = null;
    try {
        conn=getConnection();
        //事务提交
        conn.commit();
        //关闭资源
        conn.close();
        //解除版定
        tl.remove();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

/**
 * 事务回滚且释放资源
 */
public static void rollbackAndClose(){
    Connection conn = null;
    try {
        conn=getConnection();
        //事务回滚
        conn.rollback();
        //关闭资源
        conn.close();
        //解除版定
        tl.remove();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

}

经常使用的是获取数据连接

使用方法:
如在Dao层实现与数据库的交互:

//获取链接  通过工具类
    QueryRunner qr=new QueryRunner(DataSourceUtils.getDataSource());
    String sql="insert into user values(?,?,?,?,?,?,?,?,?,?)";

    qr.update(sql, user.getUid(),user.getUsername(),user.getPassword(),
            user.getName(),user.getEmail(),user.getTelephone(),
            user.getBirthday(),user.getSex(),user.getState(),user.getCode());

解释: sql语句根据需求改变,返回类型也根据需求改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值