2016-03-31 10 views
1

java kullanarak bir ek içeren kimliği almak için birkaç bağlantıya baktım ve RETURNING deyimini kullanacağımı düşündüm.Geri dönen yan tümce başarısız (postgres 9.3, jdbc)

kodum:

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

Ama bu hatayı alıyorum: Ben de başarılı olamadı (maddesini dönersek withouth) Statement.RETURN_GENERATED_KEYS kullanmaya çalıştı

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) 

(ı sonuç kümesindeki hiçbir şey yoktu) .

İlk Soru: ricam psql'in çalışır gibi ben İADESİ deyim çalışması yapmak istiyorum

İkinci Soru: İlk mümkün değilse, nasıl aynı sonucu ben

olabilir postgres9.3.jdbc3 jar ile postgre 9.3 kullanarak.

Yardımlarınız için teşekkürler.

+0

"ResultSet" objesini kullanabilir misiniz? Bence ResultSet iyi olurdu, bunu dene. –

+0

tamam, bu kadar basit ... Bu problemi aldığımdan beri 3 saat geçti ... Teşekkür ederiz @AtaurRahmanMunna – Whitefret

cevap

1

Kullanım ResultSet nesne yerine rowNumber şimdi resultSet değişkeninde

ResultSet resultSet = stmt.executeQuery(sql); 

sorgu sonucu.

+0

Bu nasıl olmalı? ExecuteUpdate yöntemi her zaman bir tamsayı döndürür: https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeUpdate(java.lang.String) –

+0

@EthanLeroy, Kötü . Her nasılsa hata yaptım. executeQuery 'ResultSet' nesnesini döndürür. Cevabımı zaten güncelledim. Güzel yakalama için teşekkürler. –