Whitefret
Whitefret

Reputation: 1067

Returning clause fails (postgres 9.3, jdbc)

I have looked at several link to retrieve the id with an insert using java, and I thought I would use the RETURNING clause.

my code:

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);

But I get this error:

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)

I also tried to use the Statement.RETURN_GENERATED_KEYS (withouth Returning clause) without success (I had nothing in the result set).

First Question: I would like to make the RETURNING statement work, as my request works in psql

Second Question: If the first is not possible, how can I have the same result

I am using postgres 9.3 with the postgres9.3.jdbc3 jar.

Thanks for your help.

Upvotes: 3

Views: 2454

Answers (1)

Ataur Rahman Munna
Ataur Rahman Munna

Reputation: 3917

Use ResultSet object instead of rowNumber

ResultSet resultSet = stmt.executeQuery(sql);

your query result now in resultSet variable.

Upvotes: 3

Related Questions