目录
一、使用idea连接数据库
1.点击侧边栏‘Database’中的‘+’号
如果没有此侧边栏的话,可以点击左下角类窗口图标,查看是否进行了折叠
2.在‘Data Source’中选择需要的数据库类型,这里以MySQL为例
3.输入用户名密码,可测试是否连接成功
4.选择连接至哪个库
直接勾选需连接的对象即可
5.选中一个表双击便可显示其内容
6.调出console执行SQL语句
二、实现对事务的操作
- 事务:一个包含多个步骤的业务操作。 如果这个业务操作被事务管理,则这多个步骤要么同时成功,要么同时失败
- 操作:开启事务 -> 提交事务 -> 回滚事务
- 使用 Connection 对象来管理事务
- 开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为 false, 即关闭数据库的自动提交功能=自动开启事务
- 在执行 sql 之前开启事务
- 提交事务:commit()
- 当所有 sql 执行完提交事务
- 回滚事务:
- rollback() [在 catch 中回滚事务]
1.创建数据
CREATE TABLE account(
id Int PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(40),
money FLOAT
);
/*插入测试数据*/
insert into account(name,money) values("A",1000);
insert into account(name,money) values("B",1000);
insert into account(name,money) values("C",1000);
2.编写工具类
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class JdbcUtils {
private static String driver=null;
private static String url=null;
private static String username=null;
private static String password=null;
static {
try{
InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
Properties properties = new Properties();
properties.load(in);
driver=properties.getProperty("driver");
url=properties.getProperty("url");
username=properties.getProperty("username");
password=properties.getProperty("password");
Class.forName(driver);
}catch (Exception e){
e.printStackTrace();
}
}
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,username,password);
}
public static void release(Connection conn,Statement st,ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3.编写测试语句
import java.sql.*;
public class Transaction01 {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement st=null;
ResultSet rs=null;
try {
conn=JdbcUtils.getConnection();
//关闭数据库的自动提交功能=自动开启事务
conn.setAutoCommit(false);
String sql1="update account set `money`=`money`-100 where `name`='A'";
st=conn.prepareStatement(sql1);
st.executeUpdate();
String sql2="update account set `money`=`money`+100 where `name`='B'";
st=conn.prepareStatement(sql2);
st.executeUpdate();
//业务完毕提交事务
conn.commit();
System.out.println("成功");
} catch (SQLException e) {
try {
conn.rollback();//如果失败就回滚事务,默认自动回滚
} catch (SQLException ex) {
ex.printStackTrace();
}
e.printStackTrace();
}
finally {
JdbcUtils.release(conn,st,rs);
}
}
}
测试成功:
总结:
开启事务(conn.setAutoCommit(false))
一组事务执行完毕,提交事务
可以在catch语中显示的定义回滚语句,但默认失败就会回滚
本文含有隐藏内容,请 开通VIP 后查看