# Mit Button einen Datensatz löschen



## boze (1. Sep 2015)

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:


```
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:







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.


----------



## Times (1. Sep 2015)

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:In die Zwischenablage kopieren


int[] notenr = new int[Länge]; //Länge = anzahl an Datensätzen

_
und dann in der Schleife statt:
_


		Java:In die Zwischenablage kopieren


int notenr[i] = rs.getInt(1);

nurnoch:


		Java:In die Zwischenablage kopieren


notenr[i] = rs.getInt(1);

_


----------



## boze (1. Sep 2015)

Times hat gesagt.:


> 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:
> _
> 
> ...



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!


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


----------

