Donc, j'essaie de créer un JTable qui se connecte à la base de données du serveur SQL par JBDC, et avoir une fonction comme insérer, supprimer et éditer les données. Cela fonctionne bien avec l'insertion mais la mise à jour, la suppression. Pouvez-vous me montrer pourquoi j'ai obtenu ArrayIndexOutOfBoundsException: -1
et comment y remédier. Voici mon code. Livre est une classe étend ici Jframejava JDBC ArrayIndexOutOfBoundsException lors de la suppression, mettre à jour
public Book() {
initComponents();
model.addColumn("ID");
model.addColumn("Name");
model.addColumn("Type");
jTable1.setModel(model);
displayTable();
jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
int row = jTable1.getSelectedRow();
txtName.setText(jTable1.getValueAt(row, 1).toString());
txtType.setText(jTable1.getValueAt(row, 2).toString());
}
});
}
public void displayTable() {
try {
model.setRowCount(0);
ConnectToSQL sql = new ConnectToSQL();
connection = sql.getConnection();
st = connection.createStatement();
ResultSet result = st.executeQuery("SELECT * FROM BOOK");
while (result.next()) {
model.addRow(new Object[]{result.getInt("id"), result.getString("name"), result.getString("type")});
}
} catch (SQLException ex) {
Logger.getLogger(Book.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void btnUpdateActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int row = jTable1.getSelectedRow();
String id = jTable1.getValueAt(row, 0).toString();
try {
// TODO add your handling code here:
st.executeUpdate("Update Book set name ='" + txtName.getText() + "',type='" + txtType.getText() + "' where id =" + id);
displayTable();
} catch (SQLException ex) {
Logger.getLogger(Book.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int row = jTable1.getSelectedRow();
String id = jTable1.getValueAt(row, 0).toString();
try {
// TODO add your handling code here:
st.executeUpdate("Delete from book where id =" + id);
displayTable();
} catch (SQLException ex) {
Logger.getLogger(Book.class.getName()).log(Level.SEVERE, null, ex);
}
}
dans quelle ligne? Vous obtenez cette erreur –
dans btnUpdateActionPerformed et btnDeleteActionPerformed j'ai obtenu ArrayIndexOutOfBoundsException même si elle toujours supprimer ou mettre à jour à la base de données –
bien «-1» cela se produire lorsque vous ne sélectionnez pas une ligne., Et puis la ligne sélectionnée retour -1'.par exemple si 'row = -1' alors' jTable1.getValueAt (-1, 1) 'et ensuite vous obtenez l'erreur. Pour l'éviter vous pouvez vérifier 'if (row! = - 1) {// faire quelque chose} else {// plz sélectionner une ligne}' –