2025年Jdbc executeUpdate 返回值

Jdbc executeUpdate 返回值原文地址 http nkadun iteye com blog java api 里是这样说的 executeUpdat int executeUpdat throws SQLException Executes the SQL statement in this PreparedStat object which must be an SQL

原文地址:http://nkadun.iteye.com/blog/1435333

java api里是这样说的
executeUpdate
int executeUpdate() throws SQLException
Executes the SQL statement in this PreparedStatement object, which must be an SQL INSERT, UPDATE or DELETE statement; or an SQL statement that returns nothing, such as a DDL statement.
Returns:
either (1) the row count for INSERT, UPDATE, or DELETE statements or (2) 0 for SQL statements that return nothing

在使用乐观锁的时候经常需要验证这个返回值来防止并发,但不同的JDBC驱动有不同的实现,并不是所有插入或更新都返回1,最近试了几个:
MySQL中:

Sql代码

INSERT INTO T VALUES(?, ?) ON DUPLICATE KEY UPDATE c = ?;

会有1、2、3三种可能的返回值;

PostgreSQL中:

Sql代码

INSERT INTO T1 VALUES(?, ?);

当T1没有主键时,插入返回值为0;

所以不能简单地靠返回值再决定回滚,即:

Java代码

int rowN = st.executeUpdate(sql);

if(rowN == 1) //错误代码

conn.rollback();

if(rowN < 1) //错误代码

conn.rollback();

还有很多别的情况,欢迎讨论

编程小号
上一篇 2025-02-26 18:06
下一篇 2025-01-29 14:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/146009.html