`
nkadun
  • 浏览: 55309 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

关于jdbc executeUpdate的返回值

 
阅读更多
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中:
INSERT INTO T VALUES(?, ?) ON DUPLICATE KEY UPDATE c = ?;

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

PostgreSQL中:
INSERT INTO T1 VALUES(?, ?);

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

所以不能简单地靠返回值再决定回滚,即:
int rowN = st.executeUpdate(sql);
if(rowN == 1) //错误代码
   conn.rollback();
if(rowN < 1) //错误代码
   conn.rollback();


还有很多别的情况,欢迎讨论
分享到:
评论

相关推荐

    JDBC中PreparedStatement接口提供的execute、executeQuery和executeUpdate之间的区别及用法

    JDBC 中 PreparedStatement 接口提供的 execute、executeQuery 和 executeUpdate 之间的区别及用法 JDBC 中的 PreparedStatement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。...

    jdbc连接代码

    int i = stmt.executeUpdate(sql); if (i &gt; 0) { System.out.println("注册成功"); } else { System.out.println("注册失败"); } } catch (Exception e) { e.printStackTrace(); } ...

    第10章 JDBC-课后习题1

    2. 正确,`Statement`接口的`execute(String sql)`返回值是`boolean`,表示SQL语句的执行是否成功。 3. 正确,`PreparedStatement`是`Statement`的子接口,用于执行预编译的SQL语句。 4. 错误,`DriverManager....

    execute、executeQuery和executeUpdate之间的区别

    在Java开发中,尤其涉及到数据库操作时,`execute`, `executeQuery` 和 `executeUpdate` 这三个方法是JDBC编程中非常重要的一部分。它们分别适用于不同类型的SQL语句,理解这些方法的区别对于正确高效地执行数据库...

    java 调用PI时序库的驱动 PI时序库的jdbc驱动jar

    4. **执行查询**:调用`executeQuery()`或`executeUpdate()`方法执行SQL查询或DML操作。对于查询,结果将返回一个`ResultSet`对象,可以遍历获取数据。 5. **处理结果**:如果执行的是查询,需要遍历`ResultSet`,...

    jdbc连接数据库步骤

    - 如果执行的是更新操作,则返回值为int类型,代表受到影响的行数。 7. 关闭连接: 一旦完成对数据库的操作,应该释放数据库资源,关闭连接。关闭资源的顺序很重要,应按照从外到内的顺序关闭ResultSet、...

    execute、executeQuery和executeUpdate之间的区别.doc

    ### JDBC中Statement接口提供的execute、executeQuery和executeUpdate的区别 #### 一、概述 在Java开发过程中,尤其是在处理数据库操作时,我们经常会遇到`execute`、`executeQuery`和`executeUpdate`这三个方法。...

    常用数据库-jdbc连接

    CallableStatement用于调用数据库中的存储过程,其方法与PreparedStatement类似,但可以处理OUT参数和返回值。 7. **连接池**: 在实际项目中,为了提高性能和减少资源消耗,通常会使用连接池(如C3P0、HikariCP...

    sqljdbc2005

    3. 执行SQL操作:通过`Connection`对象创建`Statement`或`PreparedStatement`,然后调用其`executeQuery()`或`executeUpdate()`方法执行SQL语句。 4. 处理结果:对于查询操作,可以获取`ResultSet`对象并遍历结果;...

    Greenplum Database JDBC Driver:greenplum.jar

    对于DML语句,可以检查executeUpdate()的返回值判断影响的行数。 5. 关闭资源:使用完毕后,记得关闭`ResultSet`、`Statement`和`Connection`,避免资源泄露。 四、高级特性 1. 分布式事务:Greenplum支持分布式...

    用JDBC向Students表中插入数据

    5. **处理结果**:插入操作无返回结果,但可以检查`executeUpdate()`的返回值,判断是否成功插入。 6. **关闭资源**:最后,记得关闭Statement、Connection等资源,防止资源泄露。 在Oracle数据库中,Java类库提供...

    使用JDBC总结操作数据库

    - 使用`executeUpdate()`执行INSERT、UPDATE或DELETE语句,返回值为受影响的行数。 ```java int count = st.executeUpdate(sql); ``` - 对于SELECT语句,使用`executeQuery()`,返回`ResultSet`对象。 ```java ...

    jdbc实现增删改查功能

    使用`executeUpdate()`方法执行插入操作,返回值为受影响的行数。 ```java pstmt.setInt(1, id); pstmt.setString(2, name); int rowsInserted = pstmt.executeUpdate(); ``` 4. **数据查询(Select)** ...

    Jdbc连接数据库的方法

    - 插入、更新或删除数据:使用`Statement`对象的`executeUpdate()`方法,返回值表示受影响的行数。 ```java public boolean executeUpdate(String sql) { // ... Statement stmt = conn.createStatement(); int ...

    登陆-注册实现代码jsp+jdbc

    - 注册过程中,使用 `Statement.executeUpdate(sql1)` 执行插入操作,返回值表示受影响的行数。如果返回值不为0,表示数据已成功插入,反之则表示注册失败。 7. **用户界面反馈**: - 使用HTML和JavaScript向用户...

    JDBC编程几乎所有操作的示例源代码

    4. **执行SQL**:调用`Statement`或`PreparedStatement`的`executeQuery()`或`executeUpdate()`方法执行SQL查询或修改操作。 5. **处理结果集**:对于`executeQuery()`返回的结果集,可以使用`ResultSet`对象进行...

    培训机构内部jdbc 练习题

    7. `executeUpdate(sql)`方法的返回值是int类型,表示SQL语句影响的行数,常用于INSERT、UPDATE、DELETE操作。返回值的意义在于确认SQL语句执行后数据库的修改情况。 8. `Statement`和`PreparedStatement`的区别: ...

    JDBC基础培训课件ppt

    - 更新数据:同样使用`executeUpdate()`,返回值表示更新行数。 - 删除数据:同上,返回删除的行数。 **5. 数据查询** - `ResultSet`对象:遍历查询结果,`rs.next()`检查是否还有下一行,`rs.getString(column...

    Jdbc深入分析

    - `executeUpdate(String sql)`:用于执行SQL更新语句(如INSERT、UPDATE、DELETE),返回受影响的行数。 - `execute(String sql)`:执行任意SQL语句,根据执行结果返回布尔值。 **3.2 CRUD操作** CRUD操作指的是...

    java jdbc连接数据库大全

    `Statement`接口用于执行SQL语句,返回`ResultSet`对象,包含`executeQuery()`(用于查询)、`executeUpdate()`(用于DML操作,如INSERT、UPDATE、DELETE)和`execute()`(执行任意SQL语句)等方法。 #### ...

Global site tag (gtag.js) - Google Analytics