java - POSTGRES::在插入 SQLException 时更新

标签 java postgresql jdbc

我是 Postgres 的新手。我正在尝试使用 java/postgres jdbc 执行以下代码(适用于 MySQL):

for (int i = 0; i < arr.size(); i++)
{       
 dtoIdent ident = arr.get(i);

 stIns.setLong(1, idInterface);
 stIns.setString(2, tipo);

 try { stIns.executeUpdate(); } 
 catch (SQLException sqe) 
 { 
  stUpd.setString(1, ident.getTipo());
  stUpd.executeUpdate();
 }
}

连接在 autcommit = false 中。 “stIns”和“stUpd”是“PreparedStatements”。

我得到一个 25P02。

可以用 Postgres 做到这一点吗?任何解决方法?

非常感谢,

琼。

最佳答案

由于您的自动提交是错误的,并且您的语句被中止,您必须回滚连接,因为它现在处于无效状态。

在您的 catch block 中,在使用 executeUpdate 之前只需执行此操作:

conn.rollback();

然而,这将回滚之前在事务中完成的所有更改。如果这是一个问题,那么您应该在 try 语句之前使用 conn.setSavepoint() 创建一个保存点,然后在 catch block 中回滚到该保存点。

关于java - POSTGRES::在插入 SQLException 时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18768676/

相关文章:

java - 使用 Keycloak 中的离线 cookie 实现单点登录 (SSO)

java - 在 Vert.x 路由器中设置超时 "globally"(适用于所有操作)

postgresql - 如何从 psql 返回一个值到 bash 并使用它?

java - ORA-01017: 用户名/密码无效;使用 wss4j 时登录被拒绝

java - 如何在 Spark 中使用 Java 8 Date 类和 Jackson?

java - 如何按字段类型对匹配的文档字段进行分组?

sql - 从时间段生成一个表,每个条目跨越一个小时

ruby-on-rails - PG::UndefinedColumn:错误:列court.user_id不存在

mysql - "You have an error in your SQL syntax"

java - 结果集中的 fetchsize 默认设置为 0