# DELETE-Statement



## zero11 (6. Dez 2008)

Hallo zusammen!

Bin gerade dabei mir eine kleine Applikation zu erstellen mit diversen SQL-Statements wie INSERT,SELECT und DELETE mit Access und JAVA

Die Statements insert und select funktionieren auch perfekt nur beim delete-statement hab ich noch diverse schwierigkeiten   

Der selektierte Eintrag aus der list1 soll dann über einen Klick auf einen Button aus der DB gelöscht werden.
Habe versucht es mit einem Substring zu machen, da der erste Wert in der Tabelle die Nr ist.

Hie rmal der bisherige Code:

```
try 
       { 
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
        String url = "jdbc:odbc:kunden"; 
        Connection con = DriverManager.getConnection(url); 
        String data = list1.getSelectedItem();
        String id = data.substring(0);
        String sql = "DELETE FROM kundenstamm WHERE nr='"+id+"';";
        PreparedStatement pstmt = con.prepareStatement(sql);
        pstmt.executeUpdate(); 
        con.close(); 
        } 
   catch (Exception ex) 
        { 
           System.out.println(ex.toString()); 
           System.exit(1); 
         }
```

Die Tabelle kundenstamm hat die Spalten Nr,Nachname,Vorname, Straße, Plz,Ort wobei "Nr" der Primärschlüssel(Auto-Wert) ist.

Als Fehlermeldung erhalte ich dann "Data type mismatch..."


Man kann es sicherlich eleganter lösen als mit einem Substring....ich weiß nur nicht wie 

Ich hatte es erst mit einem ResultSet versucht, hab dann aber mal nen bisschen hier im Forum und bei google geschaut und herausgefunden, dass es mit einem PreparedStatement gemacht werden muss.

Vielleicht weiß jemand von euch wie ich das Problem lösen kann 

Vielen Dank im Voraus


----------



## Gelöschtes Mitglied 5909 (6. Dez 2008)

deine id wird wohl kein string sein und du verwendest PreparedStatements auch falsch

http://openbook.galileocomputing.de...22_010.htm#mjee1199ffaeb3a2cf33cb7b5a1b5f54f2


----------



## zero11 (6. Dez 2008)

Hallo...danke für die schnelle Antwort!

ja, das hab ich jetzt gerade auch gesehen...der Primary Key ist ja kein String :shock: 

Aber ich weiß leider nicht, wie ich es sonst umsetzen soll  

Ich muss ja irgendwie die Nr aus der Liste auswählen und das erste Zeichen (in diesem Fall die Nr) abspeichern, um einen Wert zum vergleichen zu haben...daher war mein erster Gedanke der mit dem Substring...

Könnt ihr mir irgendwie nen Tipp geben, wie ich es anders vergleichen kann ?

Danke


----------



## Gelöschtes Mitglied 5909 (6. Dez 2008)

```
int i = Integer.parseInt("1");
```


----------



## zero11 (6. Dez 2008)

Ok danke!

es funktioniert jetzt...hab mein PreparedStatement auch noch angepasst und nun läuft´s 

Danke nochmal


----------



## Guest (6. Dez 2008)

Wenn PreparedStatement, dann gleich so
	
	
	
	





```
...
PreparedStatement pstmt = con.prepareStatement(
   "DELETE FROM kundenstamm WHERE nr=?"
);
pstmt.setInt(1, nr);
...
```


----------



## HoaX (6. Dez 2008)

String id = data.substring(0); ist unsinn, kannst da direkt String id = data schreiben.

wenn du nicht auf access angewiesen bist/die wahl hast, dann verwende nicht den jdbcOdbc-treiber von sun, sondern lieber was vernünftiges wie hsqldb, derby, ...


----------

