Hallo, ich habe den folgenden Code, der eine Zeile in einer SQL-Tabelle löscht. Der Benutzer klickt auf ein Element in einer jlist. Der Artikel in der jlist wird gelöscht.Beseitigen Sie die Ausnahme
public class listdisplay implements ActionListener, ListSelectionListener {
@Override
public void valueChanged(ListSelectionEvent a) {
Object obj = lstcourses.getSelectedValue() ;
String obj1 = obj.toString() ;
// System.out.println(obj1) ;
String sql= " SELECT *" +
" FROM courseofferinguom " +
" WHERE professorid=" +
" '"+teacher.getTeacherIDint()+"'" +
" AND coursenumber = (SELECT coursenumber "+"FROM courseuom WHERE coursename = '"+obj1+"') " ;
try {
statement = con.prepareStatement(sql);
ResultSet rs = statement.executeQuery();
if (rs != null) {
while(rs.next())
{
txtcnum.setText(rs.getString(1)) ;
txtdaysoftheweek.setText(rs.getString(4)) ;
txttime.setText(rs.getString(5)) ;
txtlocation.setText(rs.getString(6)) ;
txtcredithours.setText(rs.getString(7)) ;
String open = "Open" ;
if (rs.getString(8).equals(open)) {
chkopen.setSelected(true);
}
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
Object obj = lstcourses.getSelectedValue() ;
String obj1 = obj.toString() ;
String sql= " DELETE " +
" FROM courseofferinguom " +
" WHERE professorid=" +
" '"+teacher.getTeacherIDint()+"'" +
" AND coursenumber = (SELECT coursenumber "+"FROM courseuom WHERE coursename = '"+obj1+"') " ;
try {
statement = con.prepareStatement(sql) ;
int rs = statement.executeUpdate() ;
txtcnum.setText(" ") ;
txtdaysoftheweek.setText(" ") ;
txttime.setText(" ") ;
txtlocation.setText(" ") ;
txtcredithours.setText(" ") ;
chkopen.setSelected(false);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// refresh the jlist
DefaultListModel listModel = new DefaultListModel();
try{
statement = con.prepareStatement("SELECT coursenumber "+"FROM courseofferinguom WHERE professorid = '"+teacher.getTeacherID()+"'");
ResultSet rs1 = statement.executeQuery();
if (rs1 != null) {
while(rs1.next())
{
statement = con.prepareStatement("SELECT coursename "+"FROM courseuom WHERE coursenumber = '"+rs1.getString(1)+"'");
ResultSet rs2 = statement.executeQuery();
if (rs2 != null) {
while(rs2.next())
{
listModel.addElement(rs2.getString(1)) ;
}
}
}
}
lstcourses.setModel(listModel) ;
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// clears the textboxes.
}
}
Wie Sie jedoch feststellen können, gibt es einen valuedChanged Listener. Also, wenn ich das Element lösche, ist es nicht mehr in der jlist, daher wird eine Ausnahme erstellt. Das Löschen funktioniert aber gut, ich möchte nur die Ausnahme beseitigen.
Was und wo ist die Ausnahme? –
Wenn ich einen Datensatz lösche bekomme ich eine Nullpointerexzeption. Der ValueChanged ListSelectionListener zeigt weiterhin auf den gelöschten Datensatz –