Java 事务 - 在 conn 上提交不会

标签 java sql-server-2005 jdbc transactions commit

假设我有以下 Java 代码片段(其中类似的内容嵌入到遗留应用程序中)

...
try {
    con.setAutoCommit(false);
    updateSales = con.prepareStatement(updateString);
    updateTotal = con.prepareStatement(updateStatement);

    updateSales.setInt(1, e.getValue().intValue());
    updateSales.setString(2, e.getKey());
    updateSales.executeUpdate();
    updateTotal.setInt(1, e.getValue().intValue());
    updateTotal.setString(2, e.getKey());
    updateTotal.executeUpdate();
    con.commit();
} catch (SQLException e ) {
...

假设这是连接到 SQL Server 2005 数据库(使用 ms 2005 驱动程序) - con.commit 是否有任何原因不会提交事务?

最佳答案

  1. 您没有向我们展示 SQL 语句,所以很难说。也许您的情况很奇怪,因此数据库无法更新/插入/删除任何记录?

  2. 检查executeUpade()的结果。如果任何记录发生更改,它应该为您提供 1 个或多个

  3. 数据库上可能有 TRIGGER 阻止此类操作。是否可以使用具有硬编码值的 updateString 从某些 SQL 编辑器更改数据库?

关于Java 事务 - 在 conn 上提交不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11987378/

相关文章:

Java:在没有对象实例化的情况下将文本解析为原始数字

java - Twitter OAuth 回调似乎在 Android 中不起作用

java - 如何通过java检测重定向以检索access_token

java - Jedis key 过期

SQL - 在另一个带有更新的身份种子的插入中插入查询

sql-server-2005 - 从动态 INSERT 获取 IDENTITY

java - MySQLIntegrityConstraintViolationException 未在异常消息中显示列名

sql - HSQLDB中WHERE和ORDER BY的性能问题

sql - 如何控制 SQL Server 中新标识列的分配顺序?

java - MyBatis 查询中的参数未被替换