2009-05-13 4 views
2

J'utilise JDBC pour insérer une ligne dans une base de données MYSQL. Je construis une commande paramétrés, exécuter et tenter de récupérer les clés générées automatiquement comme suit:Exception étrange sur getGeneratedKeys() avec JDBC pour 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... 
} 

Pour une raison quelconque, je reçois la SQLException suivante sur la ligne contenant ResultSet rs = ps.getGeneratedKeys();:

Déclaration. Clés générées Non Demandé!

Des pensées? Lorsque je lance la même requête, générée en exécutant l'application via le débogueur, elle s'exécute sans incident dans un navigateur MySQL.

Merci, brian

Répondre

5

Je pense que vous voulez appeler prepareStatement(sql, RETURN_GENERATED_KEYS)

0

La méthode getGeneratedKeys() est dans l'API JDBC 3.0 et ce n'est pas utilisable sur toute plate-forme. Et PreparedStatement n'a pas l'implémentation de getGenerateKeys() et il est seulement dans Statement et est une méthode abstraite.

Voici un sujet sur le problème de cette méthode: http://forums.sun.com/thread.jspa?threadID=260818

Questions connexes