# SQLException wenn String auf VARCHAR geschrieben wird



## copper (2. Aug 2005)

Hallo,
ich füge in eine Tabelle neu Zeilen ein mit:

```
dbsend.dbfüllen("INSERT INTO sendedaten VALUES ("+model.getValueAt(i, 1)+","+model.getValueAt(i, 2)+","+model.getValueAt(i, 3)+",'test',"+combosite.getSelectedItem()+", '00:03:00')");
```

Teilweise entnehme ich Werte aus einem Jtable oder einer Kombobox.

Die Tabelle wird initialisiert mit:

```
stmt.executeUpdate("CREATE TABLE sendedaten (" +"Gruppe       INT," +"Id     INT," +"Pfad VARCHAR(50),"+"Template VARCHAR(25)," +"Seite INT," +"Zeit TIME)");
```

Die Felder vom Typ Integer und Time werden geschrieben. 
Die Felder Vom Typ VARCHAR teilweise nicht.

Wenn in dem JTable nur Zahlen stehen, welche in des DB Feld "Pfad" eingefügt werden, so werden sie anstandslos geschrieben. 

Wenn dort Buchstaben stehen z.B. "Test" oder Buchstaben-Zeichen-Kombinationen, dann bekomme ich folgende Exception:

java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':\bild1.bmp,'test',39, '00:03:00')' at line 1

Wenn ich statt die JTable auszulesen einfach einen String übergebe z.B.:
c:\bilder und in das Feld Pfad schreiben will, dann versteht er den "\" nicht.

Also wie kann ich Pfadangaben aus JTables auslesen und in eine MySql Datenbank schreiben???

Thx für die Antworten


----------



## Bleiglanz (2. Aug 2005)

einfache Hochkommas?
oder der backslash?


nimm lieber ein preparedStatement


----------



## copper (2. Aug 2005)

Also ich meinte wenn ich Schreibe 'c:\bilder'
dann wird der Backslash nicht dargestellt in der SQL DB.

Was ist ein preparedStatement?


----------



## bronks (2. Aug 2005)

copper hat gesagt.:
			
		

> ... Was ist ein preparedStatement?


Das ist so ein Ding, welches ich hier letzten Winter über die Suchfunktion gefunden habe, nachdem der Bleiglanz es mir empfohlen hat.  :roll:


----------



## copper (2. Aug 2005)

Also ich habe das jetzt so gemacht:

 PreparedStatement prestmt;

 prestmt = con.prepareStatement(update);
 prestmt.executeUpdate(update);

Es funktioniert nicht.


----------



## Guest (2. Aug 2005)

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html


----------



## Guest (2. Aug 2005)

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html


----------



## DP (2. Aug 2005)

mach ma 'c:\\bilder' oder besser 'c:/bilder'


----------



## Bleiglanz (3. Aug 2005)

ersetzte im string update alle dynamischen teile durch ?

```
prestmt = con.prepareStatement(update);
prestmt.setInt(1,wert1);
prestmt.setInt(2,wert2);
prestmt.setString(3,wert3);
prestmt.executeUpdate(); // EDIT: prestmt.executeUpdate(update);  ist FALSCH
```


----------



## Guest (3. Aug 2005)

```
...
prestmt.executeUpdate();
```
:bae:


----------



## copper (3. Aug 2005)

das funzt 
thx nochmal


----------

