2009-05-13 4 views
2

Ich verwende JDBC, um eine Zeile in eine MYSQL-Datenbank einzufügen. Ich baue eine parametrisierte Befehl, führen Sie es aus und versuchen, die automatisch generierten Schlüssel abzurufen, wie folgt:Seltsame Ausnahme bei getGeneratedKeys() mit JDBC für MySQL 5.1

String sql = "INSERT IGNORE INTO `users` (`email`, `pass-hash`) VALUES (?, ?)"; 
Connection conn = SQLAccess.getConnection(); 
PreparedStatement ps = conn.prepareStatement(sql); 
ps.setString(1, login); 
ps.setString(2, passHash); 

int count = ps.executeUpdate(); 

if (count == 1) { 
    ResultSet rs = ps.getGeneratedKeys(); 
    rs.next(); 
     //some more stuff... 
} 

Aus irgendeinem Grund bekomme ich folgende SQLException auf der Zeile mit ResultSet rs = ps.getGeneratedKeys();:

Statement. Generierte Schlüssel Nicht Angefordert!

Irgendwelche Gedanken? Wenn ich die gleiche Abfrage, wie sie beim Ausführen der Anwendung über den Debugger generiert wurde, in einem MySQL-Browser ausführen, wird sie ohne Zwischenfälle ausgeführt.

Danke, brian

Antwort

5

Ich glaube, Sie prepareStatement(sql, RETURN_GENERATED_KEYS)

0

Die Methode getGeneratedKeys() in JDBC 3.0 API ist anrufen möchten, und dies auf allen Plattform nicht verwendbar ist.

Und PreparedStatement hat nicht getGenerateKeys() implementieren und es ist nur in Anweisung und ist eine abstrakte Methode.

Hier ist ein Thema über das Problem dieser Methode: http://forums.sun.com/thread.jspa?threadID=260818

Verwandte Themen