社区
Java EE
帖子详情
关于JDBC的事务问题
zilaishuichina
2009-05-10 10:09:25
请问如何设置这样的事务,并且如何检测。
这样的一个需求:
当一个用户在对某条记录进行update的时候,若另一个用户正好想select这条记录,要求能显示“该条记录正在被操作,请稍候再试。”
我是这样写的:
try{
//执行select()
}catch(SQLException ex){
//此处如何检测抛出的SQLException是由事务引发的,而不是由其他情况引发的?
}
不知道思路是否正确,或者有其他的实现方法?
...全文
218
26
打赏
收藏
关于JDBC的事务问题
请问如何设置这样的事务,并且如何检测。 这样的一个需求: 当一个用户在对某条记录进行update的时候,若另一个用户正好想select这条记录,要求能显示“该条记录正在被操作,请稍候再试。” 我是这样写的: try{ //执行select() }catch(SQLException ex){ //此处如何检测抛出的SQLException是由事务引发的,而不是由其他情况引发的? } 不知道思路是否正确,或者有其他的实现方法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qiheia
2009-05-31
打赏
举报
回复
[Quote=引用 23 楼 zilaishuichina 的回复:]
引用 22 楼 qiheia 的回复:
desc dba_dml_locks;
查看是否有所存在。。。。。。。。
SQL语句?
这条SQL不是很懂,在JDBC里面执行这条语句返回的是什么结果?能不能讲详细点?谢谢!
[/Quote]
你到sqlplus中执行下这条sql语句,就知道返回什么结果了,查看是否有所得存在。。。。
zilaishuichina
2009-05-31
打赏
举报
回复
再顶 等待答案
zilaishuichina
2009-05-30
打赏
举报
回复
自己顶
zilaishuichina
2009-05-29
打赏
举报
回复
[Quote=引用 22 楼 qiheia 的回复:]
desc dba_dml_locks;
查看是否有所存在。。。。。。。。
[/Quote]
SQL语句?
这条SQL不是很懂,在JDBC里面执行这条语句返回的是什么结果?能不能讲详细点?谢谢!
qiheia
2009-05-29
打赏
举报
回复
desc dba_dml_locks;
查看是否有所存在。。。。。。。。
zilaishuichina
2009-05-29
打赏
举报
回复
[Quote=引用 19 楼 Busing 的回复:]
这个UPDATE的时候应该加锁吧!不属于事务的概念吧!
[/Quote]
加锁后 JDBC该如何检测这条记录被加锁了呢
zilaishuichina
2009-05-29
打赏
举报
回复
自己顶 期待答案
Busing
2009-05-28
打赏
举报
回复
这个UPDATE的时候应该加锁吧!不属于事务的概念吧!
zilaishuichina
2009-05-28
打赏
举报
回复
发现楼上各位大大可能都没有明白我的需求 我来解释一下
先回17楼 首先我要的不是“发贴的时候能看到沙发被占用”
而是 比如 这个版块有2个斑竹, 都对帖子有修改的权限, 当其中一个斑竹A对我的帖子执行了修改操作,提交给数据库执行的时候,另一个斑竹B恰好提交了查找的操作给数据库,而我的这个帖子又恰好符合斑竹B的查询条件,理论上我的帖子是结果集中的一个。
这个时候存在这样几种结果:
1、我的帖子不放入结果集,将其他未被操作的结果返回给斑竹B;
2、我的帖子放入结果集,但放入的是被斑竹A操作之前的值;
3、阻塞斑竹B的查找请求,等待斑竹A的更新请求COMMIT之后,将最新的结果放入结果集返回给斑竹B。
现在我的需求倾向于第2种,给出被操作之前的值,但同时要能给斑竹B这样一个提示:“您所查找的结果集中有部分记录正在被其他斑竹更改并尚未提交,未提交的记录已经给您标出,对于这些未提交的记录您可以稍后重新查找”
下面解释下我为什么有这样的需求, 如下图:
现实时间轴 A斑竹的请求 B斑竹的请求
0:0:0.0 事务开始
0:0:0.1 update 记录1
0:0:0.2 update 记录2
0:0:0.3 update 记录3 select 记录1,4,……
0:0:0.4 update 记录4
0:0:0.5 update 记录5
0:0:0.6 commit
那么 当B提交select的时候,尚不知道A的请求何时commit,所以对于这种情况,我不想阻塞B的请求,而是让B能查到,但同时通知B结果集存在脏读。
不知道各位大大明白我的意思了没有。
xnjnmn
2009-05-24
打赏
举报
回复
根本就没必要你想想CSDN
你正在写贴子准备抢沙发
而另外一个人正在写并且已经完成,发送了他抢了沙发
你发贴的时候是否看到沙发被占用了呢?
还有你打开同一个。TXT文件打开两个窗口
你在一个窗口修改文件,难道你在另一个窗口可以看到你的文件被修改了吗?--没有
以上两问题解决办法
CSDN只允许一个人打开该贴子并等他发完
一个文件只能用一个窗口打开文件共享到局域网的时候别人不能打开
你说的问题只有这样
在数据库加
悲观锁
一次只允许一个人做完之后才允许其他用户使用该表或行;
特点
1、不能并发 2、可移植性差;
有效保证数据。
关于悲观锁网上应该有很多列子 帮你搜了个--请参考(http://voole.javaeye.com/blog/347356)
qiheia
2009-05-24
打赏
举报
回复
行级所得问题
学习。。。。。。。
zilaishuichina
2009-05-24
打赏
举报
回复
哪为大大知道该怎么解决
zilaishuichina
2009-05-23
打赏
举报
回复
网吧键盘不太好使 打错了几个字 不好意思
我想要的是当一个用户在对某条数据UPDATE的时候 另一个想查找这条数据的人能查到被UPDATE之前的值 但同时能给出提示信息 “该条记录正在被更新,请稍后查找最新记录” 而不是等待UPDATE执行完再执行查找
zilaishuichina
2009-05-23
打赏
举报
回复
我想要的是当一个用户在对某条数据UODATE的时候 另一个想查找这条数据的人能查到被UDATE之前的值 但同时能给出提示信息 “该条记录正在被更新,请稍后查找最新记录” 而不是等待UDATE执行完再执行查找
qq707472
2009-05-18
打赏
举报
回复
这个问题应该是设置数据库来实现的吧
liuxinhongxin
2009-05-17
打赏
举报
回复
你是想查询时就检测脏读吗?似乎很少这种需求唉。
我觉得很多多用户操作的是提交时确定是否脏读。表增加version字段,每次更新操作,检查自己手中的version是否与表中的version一致,不一致不允许更新,证明读到了脏数据。
zilaishuichina
2009-05-17
打赏
举报
回复
急等答案
zilaishuichina
2009-05-16
打赏
举报
回复
我用的是 MYSQL的 数据库 隔离级别是支持的 就是不知道JDBC在处理由于事务而导致的出错时返回的是什么Exception
StruggleVIP
2009-05-10
打赏
举报
回复
支持楼上 需求不合理 第一用户使用行级锁
pathuang68
2009-05-10
打赏
举报
回复
楼主这个意思应该不是事务。你是想加读锁,很少有人这么做的,一般数据库绝大部分情况下支持“提交读”这种分离级别。
加载更多回复(6)
12.
jdbc
事务
嵌套
1.
jdbc
事务
嵌套
jdbc
提供了
事务
保存点的概念, 用于指定
事务
的回滚时间点. 在执行回滚操作时, 可指定回滚到哪个保存点. 这这保存点之间的所有操作都将回滚 如果执行回滚操作时, 不指定保存点, 则将该连接的所有操作全部回滚 通过设置
事务
的保存点, 可实现
事务
嵌套. spring的
事务
传播策略Propagation.NESTED, 就是借助于此实现的. 1.1 相关API ...
Java之
JDBC
事务
代码案例
Java之
JDBC
事务
代码案例
Spring
JDBC
事务
管理
1.Spring
JDBC
的配置与
JDBC
Template对象 2.声明
事务
的配置方式 3.声明式
事务
的七种传播行为 1、Spring
JDBC
Spring
JDBC
是Spring框架用于处理关系型数据库的模块 Spring
JDBC
对
JDBC
aPI 进行封装,极大简化开发工作量
JDBC
Template是Spring
JDBC
的核心类,提供数据的CRUD方法 为什么有了Mybatis还需要Spring
JDBC
? 答:Mybatis对
JDBC
的封装程度较高,Spring JD.
Java-
JDBC
事务
(细讲)
JDBC
事务
新增
JDBC
事务
JDBC
事务
( 1、什么是
事务
2、java中(
jdbc
)如何控制
事务
。
事务
—重点 指的的逻辑上的一组(一组sql,insert update ,delete)操作,组成这组操作的各个单元(各个sql),要不全部成功,要么全部失败。 举例: 转账 a 给b 转账 100 a原来有1000 b原来也有1000 account 是一个表名 表示的 账务表,...
Java EE
67,513
社区成员
225,880
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章