首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDBC语句顺序

问JDBC语句顺序
EN

Stack Overflow用户
提问于 2011-08-03 07:57:24
回答 2查看 177关注 0票数 0

我正在开发一个使用JDBC和内联SQL语句的遗留jsp web应用程序。

我们在数据库中遇到了错误数据的问题,我想知道是否有可能以与代码中指定的顺序不同的顺序执行两个语句。也就是说,如果我们有两个update语句,它们的运行方式类似于下面的示例。

代码语言:javascript
复制
String sql1 = "update table set x = y";
String sql2 = "update table set z = a";
Statement statement = conn.createStatement();
db_wrapper.runSQL(sql1,statement);
db_wrapper.runSQL(sql2,statement);

有没有可能在高负载下,数据库会在第一条sql语句之前运行第二条sql语句。

我们最常遇到的问题是安装在oracle数据库上运行。

此外,代码目前不使用事务。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-03 08:20:11

不,该线程将按该顺序调用Oracle驱动程序,不存在方法调用的显式重新排序,也不存在JDBC中的重新排序或查询。

但是:

  1. 您确定您的代码没有缓冲对数据库的调用,并最终以不同的顺序执行它或将其发送到不同的连接吗?如果它将查询发送到不同的连接,则可能发生的情况是,其中一个连接在执行第二个语句时在第一个连接之前终止,第一个连接失败。
  2. 您是否正在检查调用的返回值?还是例外?会不会是第一个查询由于您的代码没有检查到的任何原因而失败?也许被抓到了,记录在某个晦涩的地方(比如系统中断),从来没有认真对待过?
  3. 驱动程序可能会有奇怪的行为。虽然我不知道您使用的是哪个版本的Oracle,但JDBC驱动程序可以自由地执行它们想做的事情。
  4. 在高负载下,将有多个线程执行JSP,因此,除非正确同步代码或正确限定查询范围,否则可能会发生许多奇怪的事情。
票数 2
EN

Stack Overflow用户

发布于 2011-08-03 08:11:00

数据应按提交更新执行的顺序显示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6920151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档