JDBC编程之事务处理

JDBC中的事务处理指的是事务的一致性等问题,例如插入一条数据(id,name,password)到表中,另一条数据(address,id)到另一张表中,并且两条数据是相关联的,那么假设第一条数据插入成功,但是第二条数据由于异常没有插入成功,那么此时为了保证事务的一致性、完整性,则两条数据都不能够插入。

1、

创建Conn连接类

Conn.java

 1 package com.test.conn;
 2
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5
 6
 7
 8 public class Conn {
 9
10     public Connection getCon(){
11         try{
12             Class.forName("com.mysql.jdbc.Driver");
13             String url = "jdbc:mysql://localhost/mytest?useUnicode = true&characterEncoding=utf-8";
14             String user="root";
15             String password="";
16             Connection conn =  DriverManager.getConnection(url,user,password);
17             System.out.println(conn.getMetaData().getURL());
18             return conn;
19         }
20         catch(Exception e){
21             e.printStackTrace();
22             return null;
23         }
24     }
25 }

2、Service_ForData.java 用来测试调用,其中加入了事务处理

 1 package com.test.service;
 2
 3 import java.sql.Connection;
 4 import java.sql.PreparedStatement;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7
 8 public class Service_ForData {
 9
10     private static Connection conn ;
11     private static PreparedStatement pstmt;
12
13     public static void main(String[] args) {
14         conn = new com.test.conn.Conn().getCon();
15
16         try {
17             conn.setAutoCommit(false);
18             addPerson(conn);
19             addAddress(conn);
20             conn.commit();
21         } catch (Exception e) {
22             System.out.println("捕获到异常");
23             e.printStackTrace();
24             try {
25                 conn.rollback();
26                 System.out.println("事务回滚成功");
27             } catch (SQLException e1) {
28
29                 e1.printStackTrace();
30             }
31
32         }
33
34     }
35
36     public static void addPerson(Connection conn) throws Exception{
37
38
39             pstmt = conn.prepareStatement("insert into person (id,name,password) values(?,?,?)");
40             pstmt.setInt(1,10);
41             pstmt.setString(2,"tom");
42             pstmt.setString(3, "123456");
43             pstmt.executeUpdate();
44
45
46     }
47
48     public static void addAddress(Connection conn) throws Exception{
49           pstmt = conn.prepareStatement("insert into address (id,address,userid) values(?,?,?)");
50           pstmt.setInt(1, 1);
51           pstmt.setString(2, "obsnsjka");
52           pstmt.setInt(3, 10);
53           pstmt.executeUpdate();
54     }
55
56
57 }

由于addAddress()方法插入不成功,所以两条记录都不插入

结果截图如下:

时间: 2024-12-28 08:50:59

JDBC编程之事务处理的相关文章

JDBC编程的事务处理

一.事务的基本概念 数据库是一个多用户使用的共享资源.当多个用户并发地存取数据的时候,在数据库中就会产生多个用户同时存取同一数据的情况.若对并发操作不加控制,就可能会产生读取和存储不正确的数据,破坏数据的一致性. 而事务是并发控制的基本单位.所谓事务,即一个操作序列.这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.比如银行转账工作:从一个账户扣款,并使用另一个账户收款,这两个操作要么都执行,要么都不执行,因此应该把它们看作是一个事务. 事务是数据库维护数据一致性的单位,在每个事务结

JDBC编程总结

JDBC编程总结 JDBC的基本原理JDBC是Java操作数据库的技术规范.他实际上定义了一组标准的操作数据库的接口.为了能让Java操作数据库,必须要有实现了JDBC这些接口的类,不同的数据库厂商为了让Java语言能操作自己的数据库,都提供了对JDBC接口的实现--这些实现了JDBC接口的类打成一个jar包,就是我们平时看到的数据库驱动.由于不同的数据库操作数据的机制不一样,因此JDBC的具体实现也就千差万别,但是你作为java程序员,你只和Java JDBC的接口打交到,才不用理会他们怎么实

JSP (3)------JDBC编程1

JDBC API : 是一系列的编程接口,可以用来连接数据库,访问数据等. DriverManager : 驱动程序管理类,用来装载驱动程序,为创建数据库连接提供支持. Connection:用于连接某一指定的数据库 Statement : 提供了执行sql语句,获取查询结果的方法.有两个子接口.分别是: PrepareStatement:用于执行预编译的sql语句 ResultSet : 提供了对结果集处理的方法 JDBC Driver API 是面向驱动程序开发商的接口,JDBC驱动程序主要

JavaEE之JDBC编程[详解]

1.数据库简介 数据库(DB,Data Base ) 数据库管理系统(DBMS,Data Base Management System) 关系型数据库(RDB) 关系型数据库管理系统(RDBMS) SQL语言(Structured Query Language):使用关系模型的数据库语言,用于和各类数据库的交互,提供通用的数据管理和查询功能. 常用SQL指令:(CURD) SELECT .INSERT.DELETE.UPDATE.CREATE.DROP ODBC(Open DataBase Co

第十三章.MySQL数据库与JDBC编程(下)

JDBC的典型用法: JDBC4.2常用接口和类简介: DriverManager:用于管理JDBC驱动的服务类,程序中使用该类的主要功能是获取Connection对象,该类包含如下方法: public static synchronized Connection getConnection(String url, String user, String  pass) throws SQLException:该方法获得url对应数据库的连接 Connection:代表数据库连接对象,每个Conn

第13章 MySQL数据库与JDBC编程

13.1 JDBC基础 13.1.1 JDBC简介 13.1.2 JDBC驱动程序 13.2 SQL语法 13.2.1 安装数据库 13.2.2 关系数据库基本概念和MySQL基本命令 13.2.3 SQL语句基础 13.2.4 DDL语言 13.2.5 数据库约束 13.2.6 索引 13.2.7 视图 13.2.8 DML语句语法 13.2.9 单表查询 13.2.10 数据库函数 13.2.11 分组和组函数 13.2.12 多表连接查询 13.2.13 子查询 13.2.14 集合查询

JDBC编程之预编译SQL与防注入式攻击以及PreparedStatement的使用教程

在JDBC编程中,常用Statement.PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程. 1.Statement       该对象用于执行静态的 SQL 语句,并且返回执行结果. 此处的SQL语句必须是完整的,有明确的数据指示.查的是哪条记录?改的是哪条记录?都要指示清楚.     通过调用

JDBC编程的步骤

一.进行JDBC编程的步骤大致如下: 1.      加载数据库驱动,通常使用Class类的forName()静态方法来加载驱动.如下代码: Class.forName(dirvirClass) 上面代码中的driverClass就是数据库驱动类所对应的字符串 加载MySQL数据库时采用的代码为: Class.forName("com.mysql.jdbc.Driver"); 2.      通过DriverManager获取数据库连接. DriverManager.getConnec

JDBC编程 之 增删改查

JDBC编程之数据增加,更改,查询,删除 1 package com.good.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.Statement; 7 8 public class Main { 9 //1数据库连接的方法就独立出来了 10 public static Connection getConnec