Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止交易在捕获时关闭(例外情况e)?_Java_Sql_Postgresql_Connection - Fatal编程技术网

Java 如何防止交易在捕获时关闭(例外情况e)?

Java 如何防止交易在捕获时关闭(例外情况e)?,java,sql,postgresql,connection,Java,Sql,Postgresql,Connection,我试图运行一个从java到PosgresSQL的查询,但从stmt.execute(sql) 我想执行一个新的查询来帮助我打印出失败的特定行,但是当我到达捕获(异常e)时,事务被中止 我无法创建新事务,因为我正在使用临时表。如何防止事务中止 org.postgresql.util.PSQLException:错误:当前事务被中止,在事务块结束之前忽略命令 在执行查询之前,在第二个try块中创建一条新语句 Statement stmt = data.db.getConnection().creat

我试图运行一个从java到PosgresSQL的查询,但从
stmt.execute(sql)

我想执行一个新的查询来帮助我打印出失败的特定行,但是当我到达
捕获(异常e)
时,事务被中止

我无法创建新事务,因为我正在使用临时表。如何防止事务中止

org.postgresql.util.PSQLException:错误:当前事务被中止,在事务块结束之前忽略命令


在执行查询之前,在第二个try块中创建一条新语句

Statement stmt = data.db.getConnection().createStatement();
ResultSet rs = stmt.executeQuery(" SELECT Bla,Bla From..");

ResultSet
需要连接并处于活动状态才能执行
next()

创建一个新语句。您会遇到什么异常,因为除非出现语法错误,
select
通常不会导致异常。请注意,PostgreSQL会在出现错误时中止事务,并且除了启动新事务外不会进行恢复。第一个异常是整数超出范围。是否使用正确的sql来避免?因为这正是我对交易的期望。失败时中止和回滚…@Fildor这是一个习惯问题,有些人(和许多数据库系统)将事务提交或错误后回滚留给程序处理(例如,当可以采取某些纠正措施时)。在查询中您必须提交什么?即使对于查询,您也需要事务来获得正确的可见性保证。在JDBC中,要么有自动提交,要么禁用自动提交,然后程序员通过显式调用commit或rollback来决定事务的结束。
Statement stmt = data.db.getConnection().createStatement();
ResultSet rs = stmt.executeQuery(" SELECT Bla,Bla From..");