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();
还有很多别的情况,欢迎讨论
分享到:
相关推荐
int i = stmt.executeUpdate(sql); if (i > 0) { System.out.println("注册成功"); } else { System.out.println("注册失败"); } } catch (Exception e) { e.printStackTrace(); } ...
今天小编就为大家分享一篇关于JDBC Oracle执行executeUpdate卡死问题的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
1、JDBC(Java Database Connection):java连接数据库统一接口API,底层主要通过直接的JDBC驱动和 JDBC-ODBC桥驱动实现与数据库的连接。 1>.JDBC驱动程序类型: <1>.JDBC-ODBC桥加ODBC驱动程序:需要ODBC驱动,适合...
1、JavaBean中使用JDBC事务处理 在JDBC中怎样将多个SQL语句组合成一个事务呢?在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到...
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之间的区别及用法
executeQuery executeUpdate的区别
Access_JDBC30.jar解决 1.破解仅支持连续查询50次和1000行的限制; 2.修复原版jar包使用execute()和executeUpdate()方法报空指针异常的BUG。
execute、executeQuery和executeUpdate之间的区别
5. 命令对象执行语句int count = st.executeUpdate(sql); //注意 delete insert update 返回的是受影响的行数 //相当于执行sql语句 命令对象执行语句ResultSet rs = st.executeQuery(sql);//注意 select 返回的是一...
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...
1.破解仅支持连续查询50次和1000行的限制; 2.修复原版jar包使用execute()和executeUpdate()方法报空指针异常的BUG。
我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的...
execute、executeQuery和executeUpdate之间的区别.doc
JDBC访问数据库的步骤 1. 新建java项目:JDBC,新建 class文件:TestJDBC 2. JDBC用到的类库基本都位于java.sql.*包中,程序中引入该包: Import java.sql.*; 3. 添加要用的数据库中的包,找到数据库中的Driver....
注释很详细,大家自己看吧。适合初学者。 可以跟简化到只需要传入一个object对象。不断完善中....
封装了java使用jdbc对mysql的操作,以及java使用jdbc对mysql的事务处理,对execute、executeUpdate、executeQuery进行了封装,把繁琐的创建数据库连接对象、PreparedStatement对象、结果集对象,打开关闭连接进行了...
原创强大的jdbc数据库操作工具类: 1.获取数据源 2.设置数据源 3.获取数据库连接 4.执行insert/delete语句,一个参数列表 public static boolean excute(String sql, List args) 5.执行insert/delete语句,多个参数...
executeUpdate增、删、改 executeQuery查。用ArrayList装查询结果