oracle Jdbc 更新语句返回零
Posted
技术标签:
【中文标题】oracle Jdbc 更新语句返回零【英文标题】:oracle Jdbc update statement return zero 【发布时间】:2012-03-28 13:44:06 【问题描述】:这是关于使用 JDBC 的 sql 更新语句。实际上,我正在调查我们遇到的一些问题,所有这些问题都挂在更新语句在尝试更新某些行时返回零的点上。
现在说清楚,特定行更新语句正在尝试更新,表中确实存在。因此不可能找到未找到记录,因此零更新。
提到这一点,我的问题是,您是否看到或者他们是否有任何其他可能性可以通过更新返回零。我正在使用 oracle jdbc 驱动程序。 oracle jdbc 也提到了更新语句可以返回零的任何情况,而不是找不到记录。
非常感谢, 阿米尔·马维亚
【问题讨论】:
“所以不可能找不到记录” - 这通常是之前刚刚所说的,“啊,这就是为什么记录没有”找不到..." 请显示一些代码。 我受到服务器限制,不能共享代码,尽管我可以说它非常普通,获取连接,创建准备好的语句并执行它。希望你能理解我必须尊重的这种约束。 不是真的,因为你没有提供任何迹象表明你是如何检查它真的找到一行的。例如,如果您将UPDATE
更改为SELECT
并删除新值(但不要触摸查询),您那么 看到它工作了吗?根据我的经验,这可能是一个与查询一样平凡的错字......
打死马(问题两年了)但我刚刚经历过,找到了可能的解释:***.com/a/19543016
【参考方案1】:
执行更新
int executeUpdate() 抛出 SQLException
执行此 PreparedStatement 对象中的 SQL 语句,该语句必须是 SQL 数据操作语言 (DML) 语句,例如 INSERT、UPDATE 或 DELETE;或不返回任何内容的 SQL 语句,例如 DDL 语句。
返回: (1) SQL 数据操作语言 (DML) 语句的行数或 (2) 0 用于不返回任何内容的 SQL 语句 抛出: SQLException - 如果发生数据库访问错误;在关闭的 PreparedStatement 或 SQL 语句返回 ResultSet 对象上调用此方法
只是说文档指定:
"请注意,当 executeUpdate 的返回值为 0 时,可能意味着以下两种情况之一:
执行的语句是影响零行的更新语句。 执行的语句是 DDL 语句。”
【讨论】:
【参考方案2】:抱歉,我还不知道如何发表评论,所以...
来自甲骨文:
http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
请注意,当 executeUpdate 的返回值为 0 时,它可能意味着以下两种情况之一:
* The statement executed was an update statement that affected zero rows.
* The statement executed was a DDL statement.
所以看起来 Update 语句可能会以某种你没有预料到的方式被破坏。我认为这是考虑到没有抛出异常的情况。如果这是可重复的,您应该能够监视在服务器端发送的 SQL 并查看您缺少什么。
【讨论】:
以上是关于oracle Jdbc 更新语句返回零的主要内容,如果未能解决你的问题,请参考以下文章
廖雪峰Java15JDBC编程-3JDBC接口-2JDBC更新