# ResultSet Syntax Fehler



## trash (24. Sep 2010)

Hallo,

ich habe versucht meine SQl Befehle auszuweiten und bin auf die executeUpdate umgestiegen, um Daten in meine Datenbank zu schreiben (INSERT)

Dafür habe ich folgenden Code:


```
ResultSet result = myStmt.executeUpdate(
   "INSERT INTO content (titel, inhalt, user, second_forum, ord, ref_beitrag, id) 
    VALUES (ltitel_einf.getText(), linhalt_einf.getText(), loged_user, '1', '1', '0') ");
```

einige Werte (Values) sind hierbei Inhalte aus Variablen, bzw. Textfields. Andere sind Konstanten.

Er spuckt mir aber folgenden Fehler aus:

incompatible types - found int but excepted java.sql.ResulSet

Liegt es an einer falschen Syntax?


----------



## eRaaaa (24. Sep 2010)

Statement (Java Platform SE 6)


----------



## tfa (24. Sep 2010)

Den Fehler kann ich jetzt nicht deuten, aber du darfst keinen Java-Code in dein SQL-Statement schreiben. Das kann die DB nicht.


----------



## fsdsfsdf (24. Sep 2010)

So müsste es klappen: 


```
"INSERT INTO content (titel, inhalt, user, second_forum, ord, ref_beitrag, id) "+
"VALUES ('"+ltitel_einf.getText()+"', '"+linhalt_einf.getText()+"', '"+loged_user+"', '1', '1', '0') "
```


----------



## trash (24. Sep 2010)

fsdsfsdf hat gesagt.:


> So müsste es klappen:
> 
> 
> ```
> ...



Ich habe es mal probiert:


```
ResultSet result = myStmt.executeUpdate("INSERT INTO content (titel, inhalt, user, second_forum, ord, ref_beitrag, id) VALUES ( '"+ltitel_einf.getText()+"', '"+linhalt_einf.getText()+"', '"+loged_user+"', '1', '1', '0')");
```

leider funktioniert das nicht. eRaaaa hat mich darauf hingewiesen, dass executeUpdate kein ResultSet zurückgibt.

Wenn ich aber statt executeUpdate, execute benutze, dann kommt als Fehlermeldung, dass er boolean statt Resultset vorfindet.

neben execute, executeQuerry, executeUpdate, gibt es doch keine anderen Befehle um einen Beitrag zu inserten. Woran liegt es dann? Hab mein INSERT INTO Befehl falsch aufgebaut?


----------



## andiv (24. Sep 2010)

executeUpdate liefert kein ResultSet zurück sondern einen int, der angibt wieviele Zeilen von deinem INSERT/UPDATE/DELETE-Query betroffen waren. Wenn du wie bei SELECT-Queries ein ResultSet brauchst, dann nimm executeQuery.

Edit: Lass einfach das ResultSet weg, das brauchst du bei einem INSERT doch gar nicht! Und execute ist für Queries da die mehr als ein ResultSet zurückgeben, braucht man nur sehr selten.


----------



## tfa (24. Sep 2010)

Du bekommst kein ResultSet bei "INSERT". Schmeiß das mit dem ResultSet raus und benutze executeUpdate() , was einen int zurück liefert.


```
int n = myStmt.executeUpdate("....");
```


----------



## trash (24. Sep 2010)

```
int count = myStmt.executeUpdate("INSERT INTO content"+" VALUES ( '"+ltitel_einf.getText()+"', '"+linhalt_einf.getText()+"', '"+loged_user+"', '1', '1', '0')");
```

Fehlermeldung : java.sql.SQLException: Column count doesn't match value count at row 1

Allgemeine Frage: In diesem Fall, weise ichd och meiner INT Variable count, einfach nur einen Zustand zu? ich möchte aber, dass dieser INSERT INTO Befehl auch tatsächlich ausgeführt wird. Wie bei meinem executeQuerry, wo ich Dinge aus meiner Datenbank abfrage!


----------



## andiv (24. Sep 2010)

trash hat gesagt.:


> ```
> int count = myStmt.executeUpdate("INSERT INTO content"+" VALUES ( '"+ltitel_einf.getText()+"', '"+linhalt_einf.getText()+"', '"+loged_user+"', '1', '1', '0')");
> ```
> 
> Fehlermeldung : java.sql.SQLException: Column count doesn't match value count at row 1



INSERT INTO tabelle (spalteA, spalteB, spalteC) VALUES (wertA, wertB, wertC)

Was fehlt bei dir?


----------



## trash (24. Sep 2010)

andiv hat gesagt.:


> INSERT INTO tabelle (spalteA, spalteB, spalteC) VALUES (wertA, wertB, wertC)
> 
> Was fehlt bei dir?



Ich habe den Fehler ) Ich habe den ID Wert freigelassen, da er mit AUTO_INCREMENT ausgestattet ist. Was soll ich da angeben? 0?


----------



## trash (24. Sep 2010)

Es funktioniert, wenn ich einfach 0 eintrage. Der Wert wird ja automatisch durch ein höheres ersetzt, solang die Zahl schon da ist.

Besten Dank @ all


----------



## SlaterB (24. Sep 2010)

lasse ihn weg, in der ersten Auflistung (spalteA, spalteB, spalteC) dann auch die Id-Spalte weglassen,


----------

