JDBC的事务处理
来源:互联网 发布:武汉苏格淘宝女装拍摄 编辑:程序博客网 时间:2024/06/17 14:48
事务,也是数据库事务,指的是作为单个逻辑工作单元执行的一系列操作。正常的情况下,操作应该顺利进行,与操作相关的所有数据库信息也成功地更新;
但是,如果在这一系列过程中任何一个环节出了差错,导致操作失败了,数据库中所有信息都必须保持操作前的状态不变。否则,数据库的信息将会一片混乱而不可预测。
一个逻辑工作单元要称为事务,必须满足ACID(原子性,一致性,隔离性和持久性)。
事务的结束只能有两种形式:提交和回滚。操作完全成功则提交,产生永久性的修改;操作不完全成功则回滚,恢复到事务开始前的状态。它们将结束一个事务。
(1)关闭自动提交事务。通过设置连接的自动提交事务属性为false,如下:
Connection conn = DriverManager.getConnection("连接URL", "用户名", "密码");//关闭自动提交事务conn.setAutoCommit(false);
(2)如果执行顺利,提交事务;一旦发生异常,回滚(rollback)事务,如下:
try{ conn.setAutoCommit(false); //关闭自动提交事务 stmt = conn.createStatement(); //创建会话 stmt.executeUpdate("sql语句"); conn.commit(); //提交事务}catch(Exception e){ e.printStackTrace(); conn.rollback(); //回滚事务 }
(3)关闭连接,如下:
finally{ if(stmt != null) stmt.close(); if(conn != null) conn.close();}
延伸:
使用JDBC操作数据库的时候,可以维护一个数据库工具类和有关数据库配置的属性文件,如下:
DBUtil.java
package com.lmb.util;import java.sql.Connection;import java.sql.SQLException;import java.util.ResourceBundle;import org.apache.commons.dbcp.BasicDataSource;/** * 数据库工具类 * @param DRIVER_CLASS type:String 数据库驱动类 * @param URL type:String 要连接的数据库的URL * @param USER_NAME type:String 要连接的数据库的登录名 * @param PASSWORD type:String 要连接的数据库的密码 * @param PAGE_SIZE type:int 商品分页操作时每页的最大商品数 * @param bds type:BasicDataSource 数据库连接池对象 * @author lmb */public class DBUtil { public static final String DRIVER_CLASS; public static final String URL; public static final String USER_NAME; public static final String PASSWORD; public static final int PAGE_SIZE = 12; private static BasicDataSource bds = new BasicDataSource(); static { //读取数据库配置资源属性文件,得到数据库配置属性 ResourceBundle rb = ResourceBundle .getBundle("com.lmb.util.dbconfig");//dbconfig.properties文件的目录 DRIVER_CLASS = rb.getString("DRIVER_CLASS"); URL = rb.getString("URL"); PASSWORD = rb.getString("PASSWORD"); USER_NAME = rb.getString("USER_NAME"); //将从资源属性文件中得到的数据库配置属性,传入新建的数据库连接池对象bds中去 bds.setDriverClassName(DRIVER_CLASS); bds.setUrl(URL); bds.setUsername(USER_NAME); bds.setPassword(PASSWORD); //设置数据库连接池的初始化连接数 bds.setInitialSize(100); //设置数据库连接池的最小连接数 bds.setMinIdle(20); //设置数据库连接池的最大连接数 bds.setMaxActive(150); } /** * 使用数据库连接池来创建数据库连接 * @return connection 一个数据库连接 */ public static Connection getConnection() { Connection connection = null; try { connection = bds.getConnection(); } catch (SQLException e) { e.printStackTrace(); } return connection; }}
dbconfig.properties(以mysql为例)
#DRIVER_CLASS=com.mysql.jdbc.DriverURL=jdbc\:mysql\://localhost\:3306/hollycrmUSER_NAME=rootPASSWORD=root
当需要创建数据库连接时:
……Connection conn=(Connection) DBUtil.getConnection();……
2 0
- JDBC的简单事务处理
- JDBC的事务处理
- JDBC的事务处理
- JDBC的事务处理
- JDBC的事务处理
- JDBC的事务处理
- JDBC的事务处理
- JDBC的事务处理
- JDBC的MySql事务处理
- JDBC 的事务处理与批处理
- 【java基础】JDBC的事务处理
- 初学JDBC(八)-JDBC的事务处理
- jdbc事务处理
- jdbc事务处理
- jdbc事务处理
- JDBC ---- 事务处理
- JDBC事务处理
- jdbc事务处理
- 如何用metersToEquatorPixels实现任意纬度的米到像素的转换
- 华为正式发布视频体验衡量体系评价标准U-vMOS SDK开发者工具
- java160108ThisLockDemo
- 窥探系统控件Chronometer的实现了解handler的用法
- SQL集合函数中case when then 使用技巧
- JDBC的事务处理
- 啊啊啊啊啊啊啊啊啊啊啊
- Business Intelligence——SSIS项目从创建到部署的简单总结(二)
- java160108TicketDemo
- 自制计时器(附项目压缩包,免分!)
- 【OpenCV入门指南】第八篇 灰度直方图
- 打包静态库整理
- RecyclerView添加Header
- 在MyEclipse 2014 中使用JUnit-(二)