Connection API帮助文档
该包属于: java.sql.Connection
一. Connection作用
Connection 接口,具体的实现类由数据库的厂商实现,代表一个连接对象。
二. Connection执行
1、获取执行SQL的对象
- 普通执行SQL对象
Statement createStatement();
- 预编译SQL执行SQL对象:防止SQL注入
PrepareStatement prepareStatement (sql);
- 执行存储过程对象
CallableStatement prepareCall(sql);
2、事务管理
1. 管理
- MySQL事务管理
开启事务
:begin或者start transaction
提交事务
:commit
回滚事务
:rollback
- JDBC 事务管理:Connection接口定义3个对应的方法
开启事务
:setAutoCommit(boolean aotuCommit)
提交事务
:commit()
回滚事务
:rollback()
2.案例
分析1: 成功情况下
代码如下(示例):
package Web.JDBCDemo;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDbCDemo2 {
@Test
public void connect1() throws ClassNotFoundException, SQLException {
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//驱动连接
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1?useSSL=false","root","o676448");
//开始声明
Statement state = conn.createStatement();
//定义语句
String sql="update account set money=money+500 where id=1";
String sql1="update account set money=money-500 where id=2";
//执行语句
int i = state.executeUpdate(sql);
int i1 = state.executeUpdate(sql1);
//判断语句
if (i>0&&i1>0){
System.out.println("执行成功");
}else{
System.out.println("执行失败");
}
//关闭流
state.close();
conn.close();
}
}
分析2: 失败情况下
package Web.JDBCDemo;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDbCDemo2 {
@Test
public void connect1() throws ClassNotFoundException, SQLException {
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//驱动连接
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1?useSSL=false","root","o676448");
//开始声明
Statement state = conn.createStatement();
//定义语句
try {
/**
开启事务
*/
conn.setAutoCommit(false);
String sql = "update account set money=money+500 where id=1";
//此时此刻定义异常
int ii = 10 % 0;
String sql1 = "update account set money=money-500 where id=2";
//执行语句
int i = state.executeUpdate(sql);
int i1 = state.executeUpdate(sql1);
//判断语句
if (i>0&&i1>0){
System.out.println("执行成功");
}else{
System.out.println("执行失败");
}
//提交事务
conn.commit();
}catch(Exception e){
conn.rollback();
System.out.println("执行失败");
}finally{
//关闭流
state.close();
conn.close();
}
}
}