ResultSet Syntax Fehler

trash

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

Java:
 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?
 
Zuletzt bearbeitet von einem Moderator:
Den Fehler kann ich jetzt nicht deuten, aber du darfst keinen Java-Code in dein SQL-Statement schreiben. Das kann die DB nicht.
 
So müsste es klappen:

Java:
"INSERT INTO content (titel, inhalt, user, second_forum, ord, ref_beitrag, id) "+
"VALUES ('"+ltitel_einf.getText()+"', '"+linhalt_einf.getText()+"', '"+loged_user+"', '1', '1', '0') "
 
Zuletzt bearbeitet von einem Moderator:
So müsste es klappen:

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

Ich habe es mal probiert:

Java:
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?
 
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.
 
Zuletzt bearbeitet:
Du bekommst kein ResultSet bei "INSERT". Schmeiß das mit dem ResultSet raus und benutze executeUpdate() , was einen int zurück liefert.

Java:
int n = myStmt.executeUpdate("....");
 
Java:
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!
 
Java:
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?
 
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
 
lasse ihn weg, in der ersten Auflistung (spalteA, spalteB, spalteC) dann auch die Id-Spalte weglassen,
 

Neue Themen


Zurück
Oben