一、jdbc操作事务
step1 创建数据库以及数据表
step2:代码
package com.qf.test.test01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Test01 {
public static void main(String[] args) {
Connection root=null;
try {
//通过反射加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
root= DriverManager.getConnection("jdbc:mysql://localhost:3306/day09? characterEncoding=utf-8",
"root", "123456");
//设置手动提交
root.setAutoCommit(false);
showInfo(root,"张三",500);
System.out.println(1/0);
showInfo(root,"李四",2500);
//提交事务
root.commit();
} catch (Exception e) {
try {
//回滚
root.rollback();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
public static void showInfo(Connection conn,String aname,double amoney) {
try {
String sql ="update acount set amoney=? where aname=?";
//通过连接对象获取执行sql对象
PreparedStatement ps = conn.prepareStatement(sql);
//给占位符赋值
ps.setObject(1,amoney);
ps.setObject(2,aname);
//发送sql执行
int num = ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
二、连接池
引言:
没有连接池之前:
有连接池后:
作用:
连接池用于统一管理与创建连接,避免反复创建和销毁连接
每次操作数据库的时候,都是从连接池里获取连接,使用完后交还给连接池
连接池的初始化连接量由程序员设置
连接池的使用步骤:
1.导入相关jar包
2.copy相关配置文件
3.获取数据源 DataSource
4.使用连接对象
常用的连接池:
DBCP:效率高,安全性低 Tomcat服务器底层连接池用 的就是DBCP
导入jar包:
copy配置文件:
工具类:
package com.qf.test.test02;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import javax.sql.DataSource;
import java.util.Properties;
public class DataSourUtils {
public static DataSource ds;
static {
try {
Properties pro = new Properties();
pro.load(DataSourUtils.class.getResourceAsStream("dbcpconfig.properties"));
ds= BasicDa