目录
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语中显示的定义回滚语句,但默认失败就会回滚