JDBC编程之事务处理.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JDBC 编程之事务处理 数据库是多用户共享的资源,当多个用户并发的存取 数据时,在数据库中就会产生多个用户同时存取同一数据的 情况,若对并发操作不加控制,就可能会产生读取和存储不 正确的数据,破坏数据的一致性,而事务是并发控制的基本 单位,所谓事务是一个操作,这些操作要么都执行,要么都 不执行。它是一个不可分割的工作单位,比如说银行转账系 统,从一个账户扣款,并使用另一个账户收款,这两个操作 要么都执行,要么都不执行,所以,应该把它们看成是一个 事务。 、事务概述 事务是数据库维护数据一致性的单位,在每个事务 束时都能保持数据的一致性,对于我们编程人员,可以把数 据库事务看成是一组 SQL 语句, SQL 语句是一个逻辑单元, 他们是不可分割的。它们的执行结果应该作为一个整体,永 久性的修改数据库的内容,或者作为一个整体取消对数据库 的修改。 、事务的四个特征 事务的四个特征分别是原子性、一致性、隔离性、持久 性。 1、原子性:是指事务中包含的操作都被看作是一个逻 辑单位,这个逻辑单元中的操作要么全部成功,要么全部失 败。这也意味着事务中的所有元素作为一个整体提交或回 滚,事务的所有元素是不可分割的,是一个完事的操作。 2、 2、 致性:是指事物开始之前和事务结束以后,数据 库都牌一致性的状态,数据库的完事性约束没有被破坏。 3、隔离性:是指对数据库修改的多个事务是彼此隔离 的,这说明事务必须是独立的,不应该以任何形式影响其它 事务。 4、持久性:是指事务完成之后对系统的影响是永久的, 该修改真实的修改了数据库,即使系统出现故意也会一直保 留。 、事务的语句 1、开始事务:begin transaction2、提交事务:committransaction 1、开始事务: begin transaction 2、提交事务: committransaction 3、回滚事务: roolbacktransaction 四、 JDBC 应用程序示例 1、新建类,名称为 TransactionDemo.java ,该类包含主 方法; 2、创建静态方法 getConnecion (),作用是加载 MySQL 的驱动程序并创建数据连接。 publicstatic Connection getConnection () { Connection conn=null ; try { Class.forName( com.mysql.jdbc.Driver ); try { conn=DriverManager.getConnection ( jdbc : mysql : //localhost : 3306/xqy_db , root , admin ); } catch ( SQLException e ) { e.printStackTrace(); } catch ( ClassNotFoundException e ) { e.printStackTrace(); return conn ; 3、创建静态insertUserData ()用于向用户表中插入 条记录。 publicstaticvoidinsertUserData () { Connection conn=getConnection (); String sql=insert into tbl_user (id,name,password, email) values ( 10,Tom, 123456,Tom@126.com) ; try { Statement st=conn.createStatement(); inti=st.executeUpdate(sql); System.out.println ( 向用户表中插入了 +i+ 条记录 ); st.close(); conn.close(); } catch ( SQLException e ) { e.printStackTrace(); 4、创建静态用于向地址表中插入一条记录。此时地址 表中已经存在一条 id 为 1 的记录。 String sql=insert into tbl_address (id, city, country, user_id) values ( 3, ShangHai, China, 10) ; 5、在主方法 main ()中调用 insertUserData ()和。 6、运行程序 会发现 insertUserData ()方法执行成功,而 idinsertAddressData ()方法出现异常,主键冲突,即已经有 为 1 的记录了, 插入数据不成功, 造成了数据不一致的问题。 id 以上问题使用事务处理机制,就可以保证数据的一致性。 五、使用事务改进 JDBC 应用程序示例

文档评论(0)

zhaoxiaoj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档