Mit Button einen Datensatz löschen

boze

Neues Mitglied
Hello

Ich habe eine Tabelle "note" die in Tabellenform im Browser angezeigt wird. Mithilfe eines "Löschen"-Buttons soll ich den Datensatz löschen können.

Da ich die fast exakt gleiche Aufgabe in PHP gelöst habe, versuchte ich dies auszunutzen und baute eine ähnliche Logik auf. Doch leider funktioniert es nicht wie erhofft. Der Code sieht zurzeit so aus:

Java:
String query = "SELECT * FROM note";
                  
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "root", "dbpass");
Statement st = con.createStatement();
                  
ResultSet rs = st.executeQuery(query);
                  
int i = 0;
                  
while (rs.next()) {
     int notenr[i] = rs.getInt(1);
     %><tr><td><%= rs.getString(2)%></td>
     <td><%= rs.getString(3)%></td>
     <td><%= rs.getString(4)%></td>
     <td><%= rs.getString(5)%></td>
     <td><form method="post" action="deletenote.jsp">
          <button type="submit" name="delete" value="<%= notenr[i] %>">löschen</button>
</form></tr>
     <% i++;}
              
     String queryDelete = "UPDATE note SET isDeleted = '1' WHERE id = " + notenr[i] + "";
                  
     String isset = request.getParameter("delete");
     if(!isset.equals("")) {
          st.executeQuery(queryDelete);
     }
              
     %>

Tabelle note:

wje28t.png


Da in der Tabelle natürlich mehr Datensätze vorhanden sind, habe ich versucht mit einem Array und der Variable i die ID der Datensätze zu benutzen.
Fehlermeldung:
java.lang.ArrayIndexOutOfBoundsException: 0

Die Fehlermeldung sagt mir, dass im Array auf der Position 0 kein Wert definiert ist, was ja eigentlich nicht so sein soll. Er soll die mit ID's abfüllen.

Ich bedanke mich im Vorraus.
 
Zuletzt bearbeitet:
Du deklarierst dein int array "notenr" erst innerhalb der Schleife und weist dort direkt der Stelle i eine Zahl zu, dabei ist das array noch nicht angelegt worden.
Schreib vor die Schleife:
Java:
int[] notenr = new int[Länge]; //Länge = anzahl an Datensätzen

und dann in der Schleife statt:
Java:
int notenr[i] = rs.getInt(1);
nurnoch:
Java:
notenr[i] = rs.getInt(1);
 
Du deklarierst dein int array "notenr" erst innerhalb der Schleife und weist dort direkt der Stelle i eine Zahl zu, dabei ist das array noch nicht angelegt worden.
Schreib vor die Schleife:
Java:
int[] notenr = new int[Länge]; //Länge = anzahl an Datensätzen

und dann in der Schleife statt:
Java:
int notenr[i] = rs.getInt(1);
nurnoch:
Java:
notenr[i] = rs.getInt(1);

Ich danke dir. Alle Syntax-Error sind verschwunden. Jetzt ist jedoch ein kleiner Fehler wieder aufgetaucht:

java.lang.NullPointerException

Ich glaube das liegt an meine if-Anweisung. Er prüft sofort und gibt null zurück, wodurch der Fehler passiert. Ich versuche kurz, das Problem zu lösen und melde mich wieder.

EDIT: Geschafft!

Java:
String isset = request.getParameter("delete");
queryDelete = "UPDATE note SET isDeleted = '1' WHERE id = '" + isset + "'";
if(isset != null) {
    st.executeUpdate(queryDelete);
}
 
Zuletzt bearbeitet:

Zurück
Oben