J'essaye d'écrire un programme pour permettre à l'utilisateur de mettre à jour une certaine valeur dans une colonne dans une base de données sql. J'utilisais executeQuery
lorsque j'écrivais des données dans la base de données et je suis allé copier et coller le même code à utiliser lors de la mise à jour d'une valeur.Conversion de executeQuery en executeUpdate
J'ai changé l'instruction SQL pour mettre à jour la valeur et j'ai lu que je devais changer mon executeQuery
en executeUpdate
. Cependant quand je suis allé pour changer cela j'ai reçu une erreur indiquant que int ne peut pas être converti en ResultSet
.
case "G":
System.out.println("Enter the player ID:");
String playerId = FileUtility.getInput().nextLine();
System.out.println("Here are the players");
//theList = loadCampersFromDatabase(theList);
for (Player camper : PlayerDAO.selectAllById(playerId)) {
System.out.println(camper);
}
System.out.println("Enter the new amount paid");
int newAmountPaid = FileUtility.getInput().nextInt();
ArrayList<Player> players = new ArrayList();
PreparedStatement ps = null;
String sql = null;
Connection conn = null;
try {
conn = ConnectionUtils.getConnection();
sql = "UPDATE `Camper` SET `amountPaid` where id like ?";
ps = conn.prepareStatement(sql);
ps.setString(1, playerId + "%");
ResultSet rs = ps.executeUpdate();
while (rs.next()) {
int newId = rs.getInt("id");
String firstName = rs.getString("firstName");
String lastName = rs.getString("lastName");
String parentsName = rs.getString("parentsName");
int phoneNumber = rs.getInt("phoneNumber");
String email = rs.getString("email");
int amountPaid = rs.getInt("amountPaid");
players.add(new Player(newId, firstName, lastName,
parentsName, phoneNumber, email, amountPaid));
}
} catch (Exception e) {
String errorMessage = e.getMessage();
e.printStackTrace();
} finally {
DbUtils.close(ps, conn);
}
break;
executeUpdate retourne un entier représentant le nombre de lignes ont été affectées, par opposition à executeQuery. – BaSsGaz
@BaSsGaz Je n'ai pas besoin de retourner quoi que ce soit à la fin, j'ai juste besoin de mettre à jour cette colonne dans la table –
Votre code est pour les résultats d'une requête de sélection, vous ne pouvez pas remplacer cela pour executeUpdate. Vous pouvez exécuter la mise à jour avant/après la requête ou vous pouvez mettre à jour le resultset au lieu d'exécuter la mise à jour. – eckes