- 浏览: 630676 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (448)
- 字符串相关 (16)
- Struts2页面显示 (15)
- Hibernate错误记录 (6)
- linux命令 (2)
- java项目测试 (5)
- 个人作品 (10)
- hibernate应用 (15)
- struts1 (7)
- 数据库(除了hibernate) (42)
- J2ME/WAP (37)
- servlet/jsp (49)
- java桌面应用+java综合 (14)
- 服务器配置,报错解决 (24)
- Myeclipse配置,抛错解决 (8)
- linux (18)
- JavaScript+jquery+ajax (45)
- div css 页面设计 (16)
- 互联网综合运营 (14)
- 编程工具类 (3)
- 论文 报告 文献 (14)
- PHP (26)
- struts2 (9)
- spring (1)
- 我的IT生活 (14)
- Resin (6)
- java项目记录 (14)
- https安全 (11)
- 支付技术 (3)
最新评论
-
yihaijunyxr:
很好呀,我好久没用iteye了,今天找出两个帐号(yihaij ...
c/c++的监听tmlisten启动缓慢解决 -
yihaijun:
好像这不算是技术博客,是工作博客
c/c++的监听tmlisten启动缓慢解决 -
ml365:
后来还优化了webservice的前置框架,不用cxf,用了另 ...
c/c++的监听tmlisten启动缓慢解决 -
Jayliuying:
有点晚哈 但是也支持一下 楼主
java相关论文的参考文献【转】 -
gqsunrise:
...
我是项目经理,我的项目管理日记【20120229】
本文介绍在Java中进行事务处理的方法,通过实例分别讲述了如何采用JavaBean、Ejb组件实现J2EE应用服务器支持的JDBC事务、JTA(Java Transaction API)事务
Java中的事务处理
一般情况下,J2EE应用服务器支持JDBC事务、JTA(Java Transaction API)事务、容器管理事务。一般情况下,最好不要在程序中同时使用上述三种事务类型,比如在JTA事务中嵌套JDBC事务。第二方面,事务要在尽可能短的时间内完成,不要在不同方法中实现事务的使用。下面我们列举两种事务处理方式。
1、JavaBean中使用JDBC方式进行事务处理
在JDBC中怎样将多个SQL语句组合成一个事务呢?在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在auto-commit模式屏蔽掉之后,如果不调用commit()方法,SQL语句不会得到事务确认。在最近一次commit()方法调用之后的所有SQL会在方法commit()调用时得到确认。
public int delete(int sID) { dbc = new DataBaseConnection(); Connection con = dbc.getConnection(); try { con.setAutoCommit(false);// 更改JDBC事务的默认提交方式 dbc.executeUpdate("delete from bylaw where ID=" + sID); dbc.executeUpdate("delete from bylaw _content where ID=" + sID); dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID); con.commit();//提交JDBC事务 con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式 dbc.close(); return 1; } catch (Exception exc) { con.rollBack();//回滚JDBC事务 exc.printStackTrace(); dbc.close(); return -1; } } |
2、SessionBean中的JTA事务
JTA 是事务服务的 J2EE 解决方案。本质上,它是描述事务接口(比如 UserTransaction 接口,开发人员直接使用该接口或者通过 J2EE 容器使用该接口来确保业务逻辑能够可靠地运行)的 J2EE 模型的一部分。JTA 具有的三个主要的接口分别是 UserTransaction 接口、TransactionManager 接口和 Transaction 接口。这些接口共享公共的事务操作,例如 commit() 和 rollback(), 但是也包含特殊的事务操作,例如 suspend(),resume() 和 enlist(),它们只出现在特定的接口上,以便在实现中允许一定程度的访问控制。例如,UserTransaction 能够执行事务划分和基本的事务操作,而 TransactionManager 能够执行上下文管理。
应用程序可以调用UserTransaction.begin()方法开始一个事务,该事务与应用程序正在其中运行的当前线程相关联。底层的事务管理器实际处理线程与事务之间的关联。UserTransaction.commit()方法终止与当前线程关联的事务。UserTransaction.rollback()方法将放弃与当前线程关联的当前事务。
public int delete(int sID) { DataBaseConnection dbc = null; dbc = new DataBaseConnection(); dbc.getConnection(); UserTransaction transaction = sessionContext.getUserTransaction();//获得JTA事务 try { transaction.begin(); //开始JTA事务 dbc.executeUpdate("delete from bylaw where ID=" + sID); dbc.executeUpdate("delete from bylaw _content where ID=" + sID); dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID); transaction.commit(); //提交JTA事务 dbc.close(); return 1; } catch (Exception exc) { try { transaction.rollback();//JTA事务回滚 } catch (Exception ex) { //JTA事务回滚出错处理 ex.printStackTrace(); } exc.printStackTrace(); dbc.close(); return -1; } } |
BEGIN TRANSACTION DeleteSupv
--SQL语句
IF @@error<>0
BEGIN
ROLLBACK TRAN DeleteSupv
GOTO on_error
END
--SQL语句
IF @@error<>0
BEGIN
ROLLBACK TRAN DeleteSupv
GOTO on_error
END
COMMIT TRAN DeleteSupv
RETURN 1
on_error:
print 'Error occured'
(三)
最近研了一下java的事务处理,原来是这么一回事,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执行,从而就有了事务的回滚,取消先前的操作.....
JavaBean中使用JDBC方式进行事务处理
public int delete(int sID) {
dbc = new DataBaseConnection();
Connection con = dbc.getConnection();
try {
con.setAutoCommit(false);// 更改JDBC事务的默认提交方式
dbc.executeUpdate("delete from xiao where ID=" + sID);
dbc.executeUpdate("delete from xiao_content where ID=" + sID);
dbc.executeUpdate("delete from xiao_affix where bylawid=" + sID);
con.commit();//提交JDBC事务
con.setAutoCommit(true);// 恢复JDBC事务的默认提交方式
dbc.close();
return 1;
}
catch (Exception exc) {
con.rollBack();//回滚JDBC事务
exc.printStackTrace();
dbc.close();
return -1;
}
}
在数据库操作中,一项事务是指由一条或多条对数据库更新的sql语句所组成的一个不可分割的工作单元。只有当事务中的所有操作都正常完成了,整个事务才能被提交到数据库,如果有一项操作没有完成,就必须撤消整个事务。
例如在银行的转帐事务中,假定张三从自己的帐号上把1000元转到李四的帐号上,相关的sql语句如下:
update account set monery=monery-1000 where name='zhangsan'
update account set monery=monery+1000 where name='lisi'
这个两条语句必须作为一个完成的事务来处理。只有当两条都成功执行了,才能提交这个事务。如果有一句失败,整个事务必须撤消。
在connection类中提供了3个控制事务的方法:
(1) setAutoCommit(Boolean autoCommit):设置是否自动提交事务;
(2) commit();提交事务;
(3) rollback();撤消事务;
在jdbc api中,默认的情况为自动提交事务,也就是说,每一条对数据库的更新的sql语句代表一项事务,操作成功后,系统自动调用commit()来提交,否则将调用rollback()来撤消事务。
在jdbc api中,可以通过调用setAutoCommit(false) 来禁止自动提交事务。然后就可以把多条更新数据库的sql语句做为一个事务,在所有操作完成之后,调用commit()来进行整体提交。倘若其中一项 sql操作失败,就不会执行commit()方法,而是产生相应的sqlexception,此时就可以捕获异常代码块中调用rollback()方法撤 消事务。
发表评论
-
备份和还原数据库【转】
2011-09-01 17:03 938使用软件备份mysql数据库(以Navicat为例) 1)打 ... -
插入数据库类型为Date的方法
2011-07-20 17:12 1544控制端用的是webwork,表单类型text 传入后用stri ... -
MySQL错误1042-Can't get hostname for your address解决方法[原]
2011-07-14 14:07 4335本人最近在linux上部署php环境,在利用xampp部署后有 ... -
因为用class12.jar去做10i的驱动报错的解决【原创】
2011-07-13 18:35 909Connection refused(DESCRIPTION ... -
运用PowerDesigner建模和建表
2011-02-21 17:20 26321 建工作空间 File -- new model – ph ... -
Tomcat自带连接池应用【转】
2011-01-28 15:54 1109tomcat6.0连接mysql数据库连接池[原创]1 下载T ... -
spring jdbc queryForList出来的数据获取内幕!【体会】
2011-01-24 10:05 3452对于一般的hibernate查询,返回的往往是一个我们熟悉的l ... -
c3p0和jdbcTemplate配置oracle集群RAC记录【原】
2011-01-17 10:26 3741领导给了一串连接串给我,如下: PERAC = (DESC ... -
指定索引/*+INDEX(TABLE INDEX_NAME)*/等优化Oracle查询效率的总结
2010-12-15 21:00 4758在之前的项目有一个很痛苦的查询,用了太多的跨数据库访问,加上数 ... -
oracle跨数据库授权【原创】
2010-12-12 22:23 1894对于oracle数据库,某个用户跨数据库访问另一个用户的表,有 ... -
oracle远程连接查询【原创】
2010-12-12 22:21 1001对于不在本库的表,需要练级查询的话,可以再oracle里面 ... -
转:深入浅出SQL之左连接、右连接和全连接
2010-12-12 22:10 827为了从两个或多个表中选出数据,我们一般使用表连接来实 ... -
左连接语句【原创】
2010-12-12 16:50 804语句如下: Query q = sessionFa ... -
存储过程详解【转载】
2010-12-12 11:20 918存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信 ... -
为什么要使用存储过程及其书写方法【原创+转载】
2010-12-12 11:18 940你想要是要处理很多数据,全部交由java去处理的时候,从数据库 ... -
.Mdf文件如何导入到SqlServer数据库【转】
2010-12-12 11:11 1862任务:将PUBS重新导入可以这样用sp_attach_db ... -
proxool 链接sqlserver的配置【转】
2010-12-12 11:08 1187配置之前必须引入proxool-0.9.0RC1.jar包 ... -
如何连接SQL Server数据库(Java版)【转】
2010-12-12 11:08 1327用Java连接SQL Server2000数据库有多种方法 ... -
一个比较规范的jdbc连接方法类
2010-12-11 22:40 821主要是留意里面的关闭连接释放资源的写法~ public ... -
转贴]如何正确利用Rownum来限制查询所返回的行数?
2010-12-11 11:29 740如何正确利用Rownum来限制查询所返回的行数? 软件环境: ...
相关推荐
关于“SQL转Java代码.exe”,这很可能是该工具的可执行文件,适用于Windows操作系统。用户只需运行这个文件,输入或导入多行SQL,然后工具会生成对应的Java代码片段,用户可以直接复制粘贴到自己的Java项目中。 在...
"JAVA操作SQL数据库"这一主题涵盖了如何使用Java语言与各种SQL(结构化查询语言)数据库进行交互的知识点。以下是一些关键概念和步骤的详细说明: 1. **JDBC(Java Database Connectivity)**:JDBC是Java API,它...
对于使用Java进行开发并且依赖于SQL Server作为数据库的企业来说,理解如何在Java环境中执行SQL Server数据库的备份至关重要。以下将详细介绍Java与SQL Server数据库备份相关的知识点。 1. **SQL Server备份类型**:...
Java SQL API是Java编程语言中用于访问和操作关系型数据库的标准接口。它是Java Database Connectivity (JDBC)的一部分,允许开发者在Java程序中执行SQL语句,进行数据查询、插入、更新和删除等操作。JDBC提供了...
综上所述,"JAVA sqlserver驱动.zip"包含的是用于Java与SQL Server通信的JDBC驱动程序,它使得Java开发者能够高效、安全地访问和操作SQL Server数据库。正确配置和使用这些驱动,可以极大地提升Java应用程序的数据库...
本项目是基于Java编程语言和SQL Server数据库实现的网上银行管理系统,旨在提供安全、高效的在线交易服务。下面将详细介绍该系统涉及的主要知识点。 1. **Java编程语言**: Java是一种跨平台的面向对象编程语言,...
这些驱动程序使得Java应用程序能够通过JDBC(Java Database Connectivity)接口与SQL Server 2008进行通信,执行SQL查询,管理事务,以及进行其他数据库操作。开发者可以通过DataSource或DriverManager来建立数据库...
4. **事务处理**:在处理工资数据时,需要确保数据的一致性和完整性,因此,了解并正确使用SQL事务至关重要。 四、系统功能 1. **员工管理**:添加、删除和修改员工信息,包括基本信息和工资详情。 2. **工资计算**...
在Java编程环境中,连接SQL Server 2008 R2...了解这些基本概念后,你就能成功地在Java应用中连接并操作SQL Server 2008 R2数据库了。记得在项目中正确配置类路径,确保`sqljdbc4-3.0.jar`可被加载到Java运行时环境。
【商品库存管理系统java+sql】是一个面向初学者的项目,旨在帮助他们理解如何结合Java编程语言和MySQL数据库来实现一个简单的库存管理应用。这个系统的核心功能可能包括商品的添加、删除、查询以及库存的增减操作,...
在Java编程中,Oracle...总的来说,Oracle在Java中的事务处理和异常回滚是通过JDBC接口实现的,它保证了数据库操作的原子性、一致性、隔离性和持久性。理解并熟练掌握这些概念对于开发健壮的Java应用程序至关重要。
总的来说,Java SQL接口和JDBC为Java开发者提供了强大的数据库操作能力,无论是简单的CRUD操作还是复杂的业务逻辑,都能轻松应对。同时,通过良好的编程实践和使用现代的JDBC连接池,可以实现高效、安全的数据库访问...
### Java批量执行SQL知识点解析 在Java开发过程中,经常需要与数据库进行交互,尤其是在处理大量数据时,如何高效地执行SQL语句变得尤为重要。本文将详细介绍如何利用Java进行批量SQL执行,包括其背景、实现原理、...
本文将深入探讨如何使用Java和SQL进行数据库操作,以及JDBC编程技术。 首先,SQL(Structured Query Language)是用于管理关系数据库的标准语言,包括创建、查询、更新和删除数据等操作。Java与SQL的结合使得开发者...
交易日志记录所有数据库的事务操作,而错误日志则存储系统启动、停止以及运行期间遇到的问题。 2. **日志文件位置**: 在Windows系统中,SQL Server错误日志通常位于`%ProgramFiles%\Microsoft SQL Server\MSSQL14...
在数据库操作中,JSTL的 `<sql>` 标签库可以方便地执行SQL查询,而无需编写过多的Java脚本。尽管JSTL不是直接用于连接SQL Server,但它可以辅助Java程序进行数据操作,提升代码的可读性和可维护性。 `jstl.jar`文件...
在这个场景中,标题提到的"JAVA 连接sqlserver类 已封装好",指的是已经有一个预先编写好的Java类,它封装了与SQL Server数据库交互的基本操作,使得开发者可以更方便地进行数据库操作。 `sqljdbc.jar`是一个驱动包...
11. **异常处理**: 在Java中处理SQL操作时,需要捕获并处理`SQLException`,确保程序的健壮性。 12. **批量操作**: JDBC提供批量处理功能,允许一次性执行多条SQL语句,提高效率。 博客中的SQL文件(0.sql到10.sql...
java 应用程序操作数据库实例,若出现sql异常则事务回滚。
6. **事务管理**:Oracle和SQL Server在事务处理上的API可能会有所不同,需要确保Java代码中的事务控制逻辑适应新的数据库环境。 7. **连接池配置**:在Java应用中,通常会使用连接池来管理数据库连接。需要更新...