JAVA / SQL Wo ist der Fehler?

... komplette Frage anzeigen

4 Antworten

Wenn du String Werte per INSERT INTO setzen willst, sollten diese immer mit einfachen Anführungszeichen  (D.h: ' )  zu beginn und zu ende  ausgestattet sein.

Du könntest, damit es für dich im Code leichter lesbar machen so gestalten, dass du eine Methode baust, die das für dich übernimmt. 

z.B.:

private static void getSQLString(String value) {
  return "'" + value + "'";
}

Damit würde deine Zeile in etwa so aussehen:

String sql = "INSERT INTO Company (ID, NAME, AGE, ADDRESS, SALARY) " + "VALUES (" + id + ", " + getSQLString(name) + ", " + age + ", " + address + ", " + salary + ")";

Ich gehe mal davon aus, dass ID, Age, address jeweils integer werte sind. Und Salary ein Double Wert.

Antwort bewerten Vielen Dank für Deine Bewertung

Wenn du jede Spalte ausfüllst, brauchst du nicht anzugeben in welche Spalte welcher Wert gehört.

Das sollte gehen:

String sql = "INSERT INTO Company " + "VALUES (" + id + ", '" + name + "', " + age + ", '" + address + "', " + salary + ")";

Wenn das nicht geht musst mal die Datentypen der einzelnen Spalten angeben, bzw am besten das Create statement des Tables.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von marcus1994
16.03.2016, 18:19

Ich habe die Tabelle mit diesen Datentypen erstellt:

String sql = "CREATE TABLE COMPANY " +
"(ID INT PRIMARY KEY NOT NULL," +
" NAME TEXT NOT NULL, " +
" AGE INT NOT NULL, " +
" ADDRESS CHAR(50), " +
" SALARY REAL)";

Jetzt funktioniert so weit alles und ich bekomme keine Fehlermeldung mehr. Allerdings wird mir name und address nicht ausgegeben, wenn ich SELECT * benutze, sondern nur id, age und salary... Warum?

0

Was soll das " hinter der ( ?

>> + "VALUES (" + id + ",  <<

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Zuck3r
16.03.2016, 17:52

String konkatenation.

2

du musst glaube ich die values unter einfache ' setzen...
also z.b. .... values( ' "+name+" ' , '" + ...

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Borgler94
16.03.2016, 17:52

habe ein ' nach direkt nach dem zweiten , vergessen btw.. die ' nur bei strings usw machen, nicht bei zahlen

0