La suppression de la ligne sélectionnée dans la base de données MySQL à travers JTable
- tb_records = jtable nom
- dossiers = nom de la table dans ma base de données
- Date = ma première colonne
- hey = substitut pour mon mot de passe réel
- mabase = nom de ma base de données
Mon problème est que lorsque je mettre en surbrillance une ligne dans ma JTable et de la supprimer, il supprime toutes les lignes. Je veux supprimer la ligne sélectionnée seulement. Voici mon code:
int row = tb_records.getSelectedRow();
DefaultTableModel model= (DefaultTableModel)tb_records.getModel();
String selected = model.getValueAt(row, 0).toString();
if (row >= 0) {
model.removeRow(row);
try {
Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "hey");
PreparedStatement ps = conn.prepareStatement("delete from records where Date='"+selected+"' ");
ps.executeUpdate();
}
catch (Exception w) {
JOptionPane.showMessageDialog(this, "Connection Error!");
}
}
Ce qui pourrait être le problème? Comment puis-je supprimer une ligne dans ma base de données et non pas toutes les lignes?
- Je pourrais utiliser un peu d'aide ici stackoverflow.com/questions/26535629/...
Vous devez vous connecter pour publier un commentaire.
1) Ne pas afficher votre propre message. Afficher le message d'erreur de l'Exception, car il permettra de donner une meilleure explication de ce qu'est le problème.
2) Utiliser un PreparedStatement pour le SQL. Vous êtes moins susceptible de faire des erreurs de syntaxe. Quelque chose comme:
Je ne sais pas beaucoup sur SQL mais peut-être que vous avez besoin pour passer un objet Date, pas une Chaîne de caractères de l'objet depuis votre clause where est à l'aide d'une Date?
deletes all the rows not the selected row
probablement parce que votre clause "where" est trop général. Il va supprimer toutes les lignes ayant la même date. Vous avez besoin plus spécifique de la manière d'indiquer la ligne à supprimer.I tried it in different column with unique values and it worked
alors pourquoi n'est-ce pas la réponse acceptée? 2. Depuis que vous avez modifié le code, pourquoi n'utilisez-vous pas la PreparedStatment correctement puis j'ai proposé ci-dessus? Il n'y a pas de temps comme le présent pour apprendre comment utiliser l'API de la façon dont il a été conçu pour être utilisé. Le minutue vous passez maintenant, vous fera économiser beaucoup de temps dans l'avenir, en évitant le besoin de déboguer les erreurs de syntaxe SQL.L'OP a écrit: