`
nkadun
  • 浏览: 54128 次
  • 性别: 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连接代码

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

    JDBC Oracle执行executeUpdate卡死问题的解决方案

    今天小编就为大家分享一篇关于JDBC Oracle执行executeUpdate卡死问题的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    JDBC详解HTML-JDBC.pp

    1、JDBC(Java Database Connection):java连接数据库统一接口API,底层主要通过直接的JDBC驱动和 JDBC-ODBC桥驱动实现与数据库的连接。 1&gt;.JDBC驱动程序类型: &lt;1&gt;.JDBC-ODBC桥加ODBC驱动程序:需要ODBC驱动,适合...

    JDBC事务处理机制探秘

    1、JavaBean中使用JDBC事务处理 在JDBC中怎样将多个SQL语句组合成一个事务呢?在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到...

    踩踩踩JDBC六大步骤

    1、JDBC编程六大步: ...1.class.forName(driver) 2.new oracle.jdbc.driver.OracleDriver(); 3.java -Djdbc.drivers=oracle....stmt.executeUpdate(sql); stmt.executeQuery(sql); pstmt.execute*(); 5)获得并处理结果集

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

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

    executeQuery executeUpdate的区别

    executeQuery executeUpdate的区别

    Access_JDBC30.jar

    Access_JDBC30.jar解决 1.破解仅支持连续查询50次和1000行的限制; 2.修复原版jar包使用execute()和executeUpdate()方法报空指针异常的BUG。

    execute、executeQuery和executeUpdate之间的区别

    execute、executeQuery和executeUpdate之间的区别

    使用JDBC总结操作数据库

    5. 命令对象执行语句int count = st.executeUpdate(sql); //注意 delete insert update 返回的是受影响的行数 //相当于执行sql语句 命令对象执行语句ResultSet rs = st.executeQuery(sql);//注意 select 返回的是一...

    jdbc连接数据库getConnection 增、删、改、查

    String url = "jdbc:mysql://127.0.0.1:3306/jdbc?useUnicode=true&characterEncoding=utf-8"; String user = "root"; String password = "root"; String driver="com.mysql.jdbc.Driver"; try { Class.forName...

    Access_JDBC30.jar【破解版】

    1.破解仅支持连续查询50次和1000行的限制; 2.修复原版jar包使用execute()和executeUpdate()方法报空指针异常的BUG。

    jdbc连接数据库的方式2

    我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的...

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

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

    JDBC访问数据库的步骤

    JDBC访问数据库的步骤 1. 新建java项目:JDBC,新建 class文件:TestJDBC 2. JDBC用到的类库基本都位于java.sql.*包中,程序中引入该包: Import java.sql.*; 3. 添加要用的数据库中的包,找到数据库中的Driver....

    java通用executeUpdate类

    注释很详细,大家自己看吧。适合初学者。 可以跟简化到只需要传入一个object对象。不断完善中....

    java使用jdbc对mysql的操作封装,包括java使用jdbc对mysql进行事务处理

    封装了java使用jdbc对mysql的操作,以及java使用jdbc对mysql的事务处理,对execute、executeUpdate、executeQuery进行了封装,把繁琐的创建数据库连接对象、PreparedStatement对象、结果集对象,打开关闭连接进行了...

    原创强大的jdbc数据库操作工具类

    原创强大的jdbc数据库操作工具类: 1.获取数据源 2.设置数据源 3.获取数据库连接 4.执行insert/delete语句,一个参数列表 public static boolean excute(String sql, List args) 5.执行insert/delete语句,多个参数...

    JDBC连接数据库总结

    executeUpdate增、删、改 executeQuery查。用ArrayList装查询结果

Global site tag (gtag.js) - Google Analytics