

package com.itheima.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;/*** JDBC API 详解:Connection*/public class JDBCDemo3_Connection { public static void main(String[] args) throws Exception { // 1. 注册驱动 // Class.forName("com.mysql.jdbc.Driver"); // mysql5之后的驱动jar包,的注册驱动,可以不写了 // 2. 获取连接:如果连接的是本机mysql并且端口是默认的3306 可以简化,(简化,就是端口号和ip不写) // 这里的127.0.0.1 可以写成localhost 不想要红色警告可以设置参数后面的键值对(前面加问号) // useSSL=false (Java的键值对是 键=值 这里不能有空格 String url = "jdbc:mysql:///db1?useSSL=false"; // db1 是数据库名 String userName = "root"; String passWord = "123456"; Connection connection = DriverManager.getConnection(url, userName, passWord); // 3. 定义sql String sql1 = "update account set money = 3000 where id = 1"; String sql2 = "update account set money = 3000 where id = 2"; // 4. 获取执行sql的对象statement statement是陈述的意思 Statement stmt = connection.createStatement(); try { // 开启事务(要么同时成功,要么同时失败) // 注释掉,不进行事务的处理 connection.setAutoCommit(false); // 值为false代表手动提交 // 将要执行的代码进行try/catch捕获异常, 对会出现异常的代码进行捕获后,回滚 // 5. 执行sql int count1 = stmt.executeUpdate(sql1); // 受影响的行数 // 6. 处理结果 System.out.println(count1); // 输出1 代表一行数据被改变 // 在这里制造一个异常 // 5. 执行sql int count2 = stmt.executeUpdate(sql2); // 受影响的行数 // 6. 处理结果 System.out.println(count2); // 输出1 代表一行数据被改变 // 提交事务: connection.commit(); // 默认自动提交(如果sql代码执行了sql代码块就会提交),但是前面设置了要手动提交 } catch (Exception throwables) { // 如果有异常执行这里 // 一旦执行错误,就进行事务的回滚 connection.rollback(); throwables.printStackTrace(); } // 提交事务 // 7. 释放资源 (有两个资源要释放,一个是Connection 一个是statement stmt.close(); // 先释放statement类的对象(因为他是后开的资源,所以先释放) connection.close(); // connection是先开的,所以后释放 }}