怎么在Java中利用JDBC实现一个事务功能

  介绍

本文章向大家介绍怎么在Java中利用JDBC实现一个事务功能,主要包括怎么在Java中利用JDBC实现一个事务功能的使用实例,应用技巧,基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Java是什么

Java是一门面向对象编程语言,可以编写桌面应用程序,网络应用程序,分布式系统和嵌入式系统应用程序。

<强> 1。转账业务

转账必须执行2个sql语句(更新更新)都成功的情况下,提交事务,如果有一个失败,则2个都回滚事务

<强> 2。事务应该具有4个属性:原子性,一致性,隔离性、持久性。这四个属性通常称为酸特性。

①原子性(原子性)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
②一致性(一致性)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
③隔离性(隔离)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
④持久性(耐久性)。持久性也称永久性(永久),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

<强> 3。这里以转账操作为案例进行演示说明,其注意点如下:

(1)一个sql语句操作不需要手动提交事务

(2)查询操作也不需要手动提交事务,

(3)但是更新,插入,删除都需要手动提交事务

(4)余额为负的可以先查询出结果再进行判断,然后再操作

(5) <代码> con.setAutoCommit(假);手动开启事务;<代码> con.commit(); 手动提交事务;<代码> con.rollback(); 事务回滚操作

<强> 4。首先创建一个数据表或者两个数据表,这里为了演示清楚创建两个数据表

怎么在Java中利用JDBC实现一个事务功能

怎么在Java中利用JDBC实现一个事务功能

<强> 5。创建好数据库和数据表,然后进行工具类的书扩展写BaseDao。java

package  com.bie.utils;   import  java.sql.Connection;   import  java.sql.DriverManager;   import  java.sql.PreparedStatement;   import  java.sql.ResultSet;   import  java.sql.SQLException;/* *   *,@author  BieHongLi   *,@version 创建时间:2017年2月27日,上午10:09:00   *,连接数据库的工具类   */public  class  BaseDao  {   private 才能;static  String 司机=癱om.mysql.jdbc.Driver";   private 才能;static  String  url=癹dbc: mysql:///test";   private 才能;static  String 用户=皉oot";   private 才能;static  String 密码=?23456”;   ,/* * *   ,,*,连接数据库的方法   ,,* @return   ,,*,@throws  ClassNotFoundException   ,,*,@throws  SQLException异常   ,,*/public 才能static  Connection  getCon (), throws  ClassNotFoundException,, SQLException {   ,,,forname(司机);//加载数据库驱动   ,,,System.out.println(“测试加载数据库成功“);   ,,,Connection 反对=DriverManager.getConnection (url,用户,密码);   ,,,System.out.println(“测试数据库链接成功“);   ,,,return 诈骗;   ,,}   ,/* * *   ,,*,关闭数据库的方法   ,,*,@param 反对   ,,*,@param  ps   ,,*,@param  rs   ,,*/public 才能;static  void 密切(ResultSet  PreparedStatement  Connection 诈骗;ps; rs) {   ,,,如果(rs !=null){//关闭资源,避免出现异常   ,,,,,try  {   ,,,,,,,rs.close ();   ,,,,,},catch  (SQLException  e), {   ,,,,,,,//,TODO  Auto-generated  catch 块   ,,,,,,,e.printStackTrace ();   ,,,,,}   ,,,}   ,,,如果(ps !=null) {   ,,,,,try  {   ,,,,,,,ps.close ();   ,,,,,},catch  (SQLException  e), {   ,,,,,,,//,TODO  Auto-generated  catch 块   ,,,,,,,e.printStackTrace ();   ,,,,,}   ,,,}   ,,,如果(con !=null) {   ,,,,,try  {   ,,,,,,,con.close ();   ,,,,,},catch  (SQLException  e), {   ,,,,,,,//,TODO  Auto-generated  catch 块   ,,,,,,,e.printStackTrace ();   ,,,,,}   ,,,}   ,,}   ,/* * *   ,,*,同意增删改的方法   ,,*,@param  sql   ,,*,@param 加勒比海盗   ,,* @return   ,,*/public 才能static  boolean  addUpdateDelete (String  sql对象[],arr) {   ,,,Connection 反对=零;   ,,,PreparedStatement  ps=零;   ,,,try  {   ,,,,,反对=BaseDao.getCon();//第一步,:连接数据库的操作   ,,,,,ps=con.prepareStatement (sql);//第二步:预编译   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Java中利用JDBC实现一个事务功能