电子商务网站开发难点西安外包网络推广
web/
2025/10/1 22:30:15/
文章来源:
电子商务网站开发难点,西安外包网络推广,如何修改网站logo,.net手机网站源码下载1. 事务指逻辑上的一组操作#xff0c;组成这组操作的各个单元#xff0c;要不全部成功#xff0c;要不全部不成功。数据库开启事务命令•start transaction开启事务•Rollback回滚事务•Commit提交事务JDBC控制事务语句•Connection.setAutoCommit(false); //start transa…1. 事务指逻辑上的一组操作组成这组操作的各个单元要不全部成功要不全部不成功。数据库开启事务命令•start transaction开启事务•Rollback回滚事务•Commit提交事务JDBC控制事务语句•Connection.setAutoCommit(false); //start transaction•Connection.rollback(); //rollback•Connection.commit(); //commit设置事务回滚点•Savepoint sp conn.setSavepoint();•Conn.rollback(sp);•Conn.commit();//回滚后必须要提交public class Demo1 {/*** 模似转帐create table account(id int primary key auto_increment,name varchar(40),money float)character set utf8 collate utf8_general_ci;insert into account(name,money) values(aaa,1000);insert into account(name,money) values(bbb,1000);insert into account(name,money) values(ccc,1000);*/public static void main(String[] args) {Connection conn null;PreparedStatement st null;ResultSet rs null;try{conn JdbcUtils_C3P0.getConnection();conn.setAutoCommit(false); //start transactionString sql1 update account set moneymoney-100 where nameaaa;st conn.prepareStatement(sql1);st.executeUpdate();String sql2 update account set moneymoney100 where namebbb;st conn.prepareStatement(sql2);st.executeUpdate();conn.commit();System.out.println(成功);}catch (Exception e) { //中途异常 自动回滚e.printStackTrace();}finally{JdbcUtils_C3P0.release(conn, st, rs);}}}public class Demo2 {public static void main(String[] args) {Connection conn null;PreparedStatement st null;ResultSet rs null;Savepoint sp null;try{conn JdbcUtils.getConnection();conn.setAutoCommit(false); //start transactionString sql1 update account set moneymoney-100 where nameaaa;st conn.prepareStatement(sql1);st.executeUpdate();sp conn.setSavepoint(); //设置事务回滚点String sql2 update account set moneymoney100 where namebbb;st conn.prepareStatement(sql2);st.executeUpdate();int x 1/0; //异常触发String sql3 update account set moneymoney100 where nameccc;st conn.prepareStatement(sql3);st.executeUpdate();conn.commit();}catch (Exception e) {try {conn.rollback(sp); //回滚到设置点conn.commit(); //回滚了要记得提交} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}e.printStackTrace();}finally{JdbcUtils.release(conn, st, rs);}}}2. 事务的特性(ACID)原子性(Atomicity)原子性是指事务是一个不可分割的工作单位事务中的操作要么都发生要么都不发生。一致性(Consistency)事务必须使数据库从一个一致性状态变换到另外一个一致性状态。隔离性(Isolation)事务的隔离性是多个用户并发访问数据库时数据库为每一个用户开启的事务不能被其他事务的操作数据所干扰多个并发事务之间要相互隔离。持久性(Durability)持久性是指一个事务一旦被提交它对数据库中数据的改变就是永久性的接下来即使数据库发生故障也不应该对其有任何影响。3. 事务的隔离级别脏读•指一个事务读取了另外一个事务未提交的数据。不可重复读•在一个事务内读取表中的某一行数据多次读取结果不同(另一个事务已经提交)。虚读(幻读)•是指在一个事务内读取到了别的事务插入的数据导致前后读取不一致。数据库共定义了四种隔离级别•Serializable可避免脏读、不可重复读、虚读情况的发生。(串行化)•Repeatable read可避免脏读、不可重复读情况的发生。(可重复读)(默认)•Read committed可避免脏读情况发生(读已提交)。•Read uncommitted最低级别以上情况均无法保证。(读未提交)settransaction isolation level 设置事务隔离级别select tx_isolation查询当前事务隔离级别public class Demo3 {/*** 设置事务隔离级别* 写一个查询程序*/public static void main(String[] args) {Connection conn null;PreparedStatement st null;ResultSet rs null;try{conn JdbcUtils.getConnection();conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); //设置隔离等级conn.setAutoCommit(false); //开启事务String sql select * from account where nameaaa;st conn.prepareStatement(sql);rs st.executeQuery();rs.next();System.out.println(rs.getFloat(money));Thread.sleep(1000*10);rs st.executeQuery();rs.next();System.out.println(rs.getFloat(money));Thread.sleep(1000*10);rs st.executeQuery();rs.next();System.out.println(rs.getFloat(money));}catch (Exception e) {e.printStackTrace();}finally{JdbcUtils.release(conn, st, rs);}}}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85289.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!