Je travaillais sur une servlet qui génère un code unique et le met à jour dans une base de données mySQL. Dans ce cas, je veux attraper toute exception lancée au cas où ce code unique existe déjà dans la table mySQL, générer un nouveau code et essayer de mettre à jour la base de données. Le problème est que je veux faire cela DANS la boucle for elle-même. Le code est le suivant :
try
{
connection = datasource.getConnection();
SQLUpdate = "INSERT INTO Voucher_dump VALUES( '"+unique_code+"','08-10-2011 04:48:48','0')";
PreparedStatement ps1 = connection.prepareStatement(SQLUpdate);
ps1.executeUpdate();
ResultSet r = ps1.getResultSet(); // this is where I'm checking if it's a duplicate
if(r==null)
out.println("This is a duplicate");
else out.println("Updated");
trial12= "08-10-2011 04:48:480.03999855056924717a";
SQLUpdate = "INSERT INTO Voucher_dump VALUES( '"+trial12+"','08-10-2011 04:48:48','0')";
ps1 = connection.prepareStatement(SQLUpdate);
ps1.executeUpdate();
r = ps1.getResultSet();
if(r==null)
out.println("This is a duplicate");
else out.println("Updated");
}
catch (SQLException sqle)
{
sqle.printStackTrace();
}
Je ne veux pas attendre la fin de la boucle entière pour attraper la SQLException (j'ai déjà défini cette clé dans mySQL comme primaire). Au moment où le résultat revient comme une entrée dupliquée, je veux re-générer cette clé et tenter à nouveau la mise à jour. Mon résultat pour ce code particulier est vide sur ma page de sortie (tous les autres paramètres s'affichent correctement). Le message "This is a duplicate" n'est pas affiché, ni le message "Updated". Peut-être que ResultSet n'est pas la meilleure façon de procéder. Pourriez-vous me donner quelques conseils sur la meilleure façon de procéder ?