JDBC之API详解(Connection)
2021-12-14 本文已影响0人
每天起床都想摆
Connection
- Connection(数据库连接对象)作用:
- 获取执行SQL的对象
- 管理事务
-
获取执行SQL的对象
-
普通执行SQL对象
Statement createStatement()
-
-
预编译SQL的执行SQL对象:防止SQL注入
PreparedStatement prepareStatement(sql)
-
执行存储过程的对象
CallableStatement prepareCall(sql)
-
事务管理
-
MySQL事务管理
(详见SQL-多表查询-事务-操作)
-
JDBC事务管理:Connection接口中定义了3个对应的方法
//开启事务:(boolean作为参数:true为自动提交事务;false为手动提交事务(即为开启事务)) setAutoCommit(boolean autoCommit) //例如开启事务 coon. setAutoCommit(false) //提交事务 commit() //回滚事务 rollback()
JDBC事务管理:
//JDBC中模拟在代码执行过程中的开启,回滚,提交可以使用Java异常处理机制来实现 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class JDBCDemo { public static void main(String[] args) throws Exception { //1.注册驱动(此语句在MySQL5版本之后已经不用主动书写) // 该语句封装在了数据库驱动包目录下MEAT-INF/services下) Class.forName("com.mysql.cj.jdbc.Driver"); //2.获取连接 //String url = "jdbc:mysql://127.0.0.1:3306/school"; //加上参数键值对禁用安全连接方式,解决警告提示 //(此处参数键值对还可以附加useServerPrepStmts = true来开启SQL预编译功能) String url = "jdbc:mysql://127.0.0.1:3306/school?useSSL = false"; String username = "root"; String password = "ZZXQJL@0916.com"; Connection coon = DriverManager.getConnection(url, username, password); //3.定义sql语句 String sql1 = "update bank set income = 1000 where name = \"John\";"; String sql2 = "update bank set income = 3000 where name = \"John\";"; //4,获取执行sql的对象statement Statement stmt = coon.createStatement(); //IDEA中按住Ctrl+Alt+T对光标选中代码块快速创建try...catch try { //开启事务 coon.setAutoCommit(false); //5.执行SQL1 int count1 = stmt.executeUpdate(sql1); //受影响的行数 //6.处理结果 System.out.println(count1); int i = 3 / 0; //在两条SQL语句之间手动创建一个异常 // 捕获到异常类ArithmeticException(算术运算时发生的异常) // 使得即使SQL1执行成功,SQL2执行失败,但是SQL的执行遭到了事务的管理 // 在执行完SQL1时触发catch中的回滚,导致两条SQL均未被执行 //5.执行SQL2 int count2 = stmt.executeUpdate(sql2); //受影响的行数 //6.处理结果 System.out.println(count2); //如果没有异常,执行try,提交事务 coon.commit(); } catch (SQLException throwables) {//此处原本为SQLException,为捕获更大的异常,将其更改为Exception //捕获到异常,进行事务回滚 coon.rollback(); throwables.printStackTrace(); } //7.释放资源 stmt.close(); coon.close(); } }
-