0%

JDBC提交事务

2017年9月4日 上午11:25

注:即使oracle中要提交commit之后,才能在真正的写到磁盘中,但是在使用jdbc时,jar包中的源码会自动的补充提交一次commit,这就和navicat premiun中操作oracle一样了

通过java,将多个sql语句组合成一个事务

  1. 作用:事务的原子性
  2. 将数据库的事务提交方式设为手动
    conn.setAutoCommit(false);
  3. 提交事务单元
    conn.commit();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.shanxi.weixin;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCDemo {

public static void main(String[] args) {

try {
//1、加载驱动类
Class.forName("com.mysql.jdbc.Driver");
//2、获取数据库连接对象connection //jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test4","root", "root");
//System.out.println(conn);
//3、通过connection 获取操作数据库的对象 statement
Statement sta = conn.createStatement();
//4、使用statement对象操作数据库完成相应的业务
//2.1 将数据库的事务提交方式设为手动
conn.setAutoCommit(false);
int a = sta.executeUpdate("delete from company where company_id in (9,10)");
int b = sta.executeUpdate("delete from company where company_id = 1 ");
int c = sta.executeUpdate("insert into company(company_id,company_name) values(null,'ccc')");
int d = sta.executeUpdate("insert into company(company_id,company_name) values(3,'ddd')");
//ResultSet rs = sta.executeQuery("select * from people");
//2.2 提交事务单元
conn.commit();
//5、处理结果集
System.out.println(a + b + c + d);

// while(rs.next()){
// System.out.println(rs.getString("name")+"---"+rs.getString("idcard"));
// }
//6、关闭资源,释放空间。
if(conn!=null){
conn.close();
}
}catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.shanxi.weixin;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCDemo2 {

public static void main(String[] args) {

try {
//1、加载驱动类
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.42.43:1521:orcl","gao", "gao");
//System.out.println(conn);
//3、通过connection 获取操作数据库的对象 statement
Statement sta = conn.createStatement();
//4、使用statement对象操作数据库完成相应的业务
//ResultSet rs = sta.executeQuery("select * from stu");
int a =sta.executeUpdate("delete from stu where s_id = 20");
int b =sta.executeUpdate("insert into stu(s_id,s_name) values(9,'aaa')");
//5、处理结果集
// while(rs.next()){
// System.out.println(rs.getString("s_name")+"---"+rs.getString("s_addr"));
// }
System.out.println(a + b);
//6、关闭资源,释放空间。
if(conn!=null){
conn.close();
}
}catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
}
}