返回子句失败(postgres 9.3,jdbc)

时间:2016-03-31 12:45:58

标签: java postgresql jdbc

我已经查看了几个使用java检索id的链接,我想我会使用RETURNING子句。

我的代码:

Connection c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/testdb?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory", "postgres","root");
String sql = "INSERT INTO main (nom_fichier, adate, mdate, cdate, size, chunknumber)"
                + " VALUES ('test',450,450,450,450,5)"
                + " Returning id"
                + ";";
Statement stmt = c.createStatement();
int rowNumber = stmt.executeUpdate(sql);

但是我收到了这个错误:

Exception in thread "main" org.postgresql.util.PSQLException: a result was returned when none was expected.
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:339)
    at fr.infotel.postgre.TestPostgre.main(TestPostgre.java:25)

我也尝试使用Statement.RETURN_GENERATED_KEYS(没有返回子句)但没有成功(我在结果集中没有任何内容)。

第一个问题:我想让RETURNING语句工作,因为我的请求在psql中工作

第二个问题:如果第一个问题不可能,我怎么能得到相同的结果

我在postgres9.3.jdbc3 jar中使用postgres 9.3。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

使用ResultSet对象代替rowNumber

ResultSet resultSet = stmt.executeQuery(sql);

您的查询结果现在位于resultSet变量。