linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > JAVA >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·Ajax实现在textbox中模糊查询显
·java定时执行的三种方法
·Java调用Oracle的过程和函数
·Ajax实现分页查询
·读取数码照片中的Exif信息
·java.lang包概述
·基于Spring+Hibernate+Eclip
·JSP获取客户端的浏览器和操作系
·JAVA反编译工具jad的简单用法
·利用Java实现网页浏览器
·Java编程基础
·Java中利用通讯API编写短信软件
·JAVA得到网卡物理地址(Windows
·NetBeans vs Eclipse之性能参数
·JAVA技术:上传图片的缩放处理
最新文章
·实例解析:Linux操作系统下Jav
·JAVA得到网卡物理地址(Windows
·Ajax实现在textbox中模糊查询显
·Ajax简单示例之改变下拉框动态
·AJAX如何与后台交互
·Ajax实现分页查询
·Ajax核心:XMLHTTP组件相关技术
·面向Java程序员的Ajax:构建动态
·JSP获取客户端的浏览器和操作系
·提高Java技能的几种简单有效的
·敏捷开发中需掌握移除重复代码
·Java中利用通讯API编写短信软件
·关于String和StringBuffer
·用Java得到硬盘空间
·如何优化JAVA程序设计和编码,
Google
 
JavaBean中使用JDBC方式进行事务处理
[ 作者:  加入时间:2007-09-30 16:01:19  来自:Linux联盟收集整理 ]


在数据库操作中,一项事务是指由一条或多条对数据库更新的sql语句所组成的一个不可分割的工作单元。只有当事务中的所有

操作都正常完成了,整个事务才能被提交到数据库,如果有一项操作没有完成,就必须撤消整个事务。我们通过提交commit()或是回滚rollback()来结束事务的操作。关于事务操作的方法都位于接口java.sql.Connection中。
   在第一次建立与数据库的连接时,在缺省情况下,连接是在自动提交模式下的, jdbc api中,可以通过调用setAutoCommit(false) 来禁止自动提交事务。然后就可以把多条更新数据库的sql语句做为一个事务,在所有操作完成之后,调用commit()来进行整体提交。倘若其中一项sql操作失败,就不会执行commit()方法,而是产生相应的sqlexception,此时就可以捕获异常代码块中调用rollback()方法撤消事务。下面是一个例子;
比如:有两张表,一个记录用户帐户(useraccount),一个是系统帐(sysaccount),现在有一个用户要向系统寄钱买东西,就要此行下面两条语句:
  String sql1 = "update useraccount set monery=monery-1000 where name='username'";
  String sql2 = "update sysaccount set monery=monery+1000 where name='sysname'"; 
但如果第一条执行了而第二条语句执行出错了就会造成不良后果。这是就可以用手动提交的方式来防止这种事情的发生:主要代码


try{
   .
   .
   .  
  conn=DriverManager.getConnection("..."); //链接数据库 
 
  conn.setAutoCommit(false);//禁止自动提交事务
  stmt = conn.Create....
  String sql1 = "update useraccount set monery=monery-1000 where name='usename'";
  String sql2 = "update sysaccount set monery=monery+1000 where name='sysname'"; 
  stmt=conn.createStatement();  
  stmt.executeUpdate(sql1);  
  stmt.executeUpdate(sql2);
 
  conn.commit(); //统一提交。
 
  }catch(SQLException e){  
  conn.rollback(); //倘若其中一项sql操作失败,就不会执行commit()方法,而是产生相应的sqlexception,此时就可以捕获 异常代码块中调用rollback()方法撤消事务。 
  e.printStackTrace();  
  }  
  finally{    
  if(stmt!=null){  
        stmt.close();    
  }  
  if(conn!=null){  
        stmt.close();  
  }  
  }

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论

评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·JavaBean实现多文件上传的两种方法  (2007-07-21 00:21:50)
 ·加快JDBC设计中JSP访问数据库  (2007-07-21 00:19:29)
 ·JDBC之代码重复使用  (2007-07-10 23:16:30)
 ·通过JDBC连接Oracle的十大灵活技术  (2007-07-10 23:12:35)
 ·在Tomcat下JSP、Servlet和JavaBean环境的配置  (2007-03-27 06:16:54)
 ·用JDBC连接Oracle数据库的十项技巧  (2007-02-06 11:55:53)
 ·快速应用JDBC控件访问数据库资源  (2006-10-09 11:42:22)
 ·如何用 jdbc 连接各种数据库方式列表  (2006-10-04 11:33:28)
 ·浅谈如何应用JDBC连接数据库My SQL  (2006-09-23 12:29:56)