# Update Befehl funkt nicht. WARUM?



## Gast0007 (4. Dez 2008)

Hallo,
mir macht gerade ein Update Befehl ziemlichen Stress. Ich bekomme einfach nicht raus, warum dieser nicht funktioniert.


```
state.executeUpdate("update tab_ma set nname = " + ma.getName() + "WHERE ma_id = 1);
```

wenn ich den gleichen Update Befehl für Testzwecke so schreibe, funktioniert es:


```
state.executeUpdate("update tab_ma set nname = 'testtesttest' WHERE ma_id = 1);
```


Folgende Exception bekomme ich immer: 1 Parameter wurden erwartet, aber es wurden zu wenig übergeben.

Ich arbeite mit einer Access DB.

Werde einfach nicht schlau daraus...

Danke für eure Hilfe!!!


----------



## Guest (4. Dez 2008)

Wenn ich mir vorher ma.getName() ausgeben lasse, steht eine Zeichenfolge (testesttest" drinnen...


----------



## SlaterB (4. Dez 2008)

String st = zusammengebauter String;
System.out.println(st);
+
System.out.println(korrekter String der funktioniert);

->
mit dem Auge vergleichen und den Fehler sofort erkennen
(z.B. fehlende einfache Anführungszeichen)

> Wenn ich mir vorher ma.getName() ausgeben lasse, steht eine Zeichenfolge (testesttest" drinnen...

meinst du "testesttest" statt (testesttest"?
im obigen Code fehlen auch schon diverse Anführungszeichen, wäre gar nicht als Code ausführbar,
da solltest du genauer werden..


----------



## maki (4. Dez 2008)

Nimm doch PreparedStatements!
Dann klappts auch mit dem update, ansonsten:
imho fehlt da ein Leerzeichen und die Apostrophe

```
state.executeUpdate("update tab_ma set nname = '" + ma.getName() + "' WHERE ma_id = 1);
```


----------



## siddy1981 (5. Dez 2008)

versuchs mal damit  ->


```
state.executeUpdate("update tab_ma set nname = 'testtesttest' WHERE ma_id = 1;");
```


habs jetzt nicht getestet aber die sql syntax  verlangt auch ein semikolon und ausserdem ist der SQL-String wie der name schon sagt auch ein String  somit muss der ja auch in Hochkomma geschrieben werden  ->   methode("meinSqlString;");


----------



## Sergeant_Pepper (8. Dez 2008)

siddy1981 hat gesagt.:
			
		

> die sql syntax  verlangt auch ein semikolon



Das gilt zumindest nicht bei Oracle-DBs. Das Semikolon ist nur erforderlich, wenn ich das SQL-Kommando interaktiv (mit SQLPlus oder einem anderen Frontend) eingebe.


----------

