JTextfield und JComboBox Wert in SQL Database speichern

Ovoxo

Mitglied
Hallo zusammen,

Ich arbeite an einem Kundenverwaltungssystem für einen Freund und bin noch ein Einsteiger in Java.

Ich habe ein Kundenformular, bei denen ich den eingegebenen Wert in eine SQL Database speichern will.
Als ich es zum testen, die Werte Hardcoded hatte, funktionierte alles einwandfrei aber seit dem ich Variablen verwende wie JTextfield und JComboBox funktioniert nichts mehr.

Java:
String sqlCommand = "INSERT INTO KundenDaten "
+ "VALUES(1150," + mainMenu.itemList.getFirmenFeld().getText() + ',' 
+ (String)mainMenu.itemList.getAnredeFeld().getSelectedItem() + ',' 
+ mainMenu.itemList.getVornameFeld().getText() + ',' 
+ mainMenu.itemList.getNachnameFeld().getText() + ',' 
+ mainMenu.itemList.getStrassenFeld().getText() + ',' 
+ mainMenu.itemList.getHausNrFeld().getText() + ',' 
+ mainMenu.itemList.getPLZFeld().getText() + ',' 
+ mainMenu.itemList.getOrtFeld().getText() + ',' 
+ mainMenu.itemList.getEmailFeld().getText() + ',' 
+ mainMenu.itemList.getTelefonFeld().getText() + ',' 
+ mainMenu.itemList.getMobileFeld().getText() + ',' 
+ mainMenu.itemList.getGeburtstagsFeld() + ',' 
+ "2014-07-25);";

stmt.executeUpdate(sqlCommand);

Ich denke es gibt Probleme weil ich in der Datenbank varchar benutze.

Wenn ich beim ersten Feld (FirmenFeld) bsp. Test eingebe, erhalte ich diesen Fehler:

Verbindung ist fehlgeschlagen: Unknown column 'Test' in 'field list'
 
Zuletzt bearbeitet:
Als Einsteiger sich gleich an GUI Programmierung in Verbindung mit Datenbank zu versuchen ist sehr gewagt!

Ich sehe mehrere Probleme:
Du verwendest "executeUpdate" willst aber ein INSERT ausführen.
Du setzt dein SQL Statement "händisch" zusammen. Dadurch ist deine Datenbank durch SQL Injection angreifbar. Verwende stattdessen Prepared Statements.
Du greifst in der Datenschicht direkt auf GUI Elemente zu, wenn du in Zukunft neue Spalten hinzufügst oder die GUI anpasst wirst du immer an so vielen Stellen Code anpassen müssen das dir der Spaß an der Programmierung vergeht. Hier fehlt eine ordentliche Architektur. GUI <-> Logik <-> Daten

Klar hört sich für einen Einsteiger nach viel und kompliziert an. Aber deswegen sollte man in der Programmierung auch kleine Schritte machen.
Konsolenprogramme, Konsolenprogramme mit Objekten, Daten über die Konsole einlesen, Arbeiten mit Dateien, Arbeiten mit Datenbanken, Arbeiten mit GUI
und wenn man dass beherrscht sollten ein Kombination davon kein Problem mehr sein.


B2T:
Um dir bei deinem Problem zu helfen, lass dir das zusammengestückelte Statement doch auf der Console ausgeben.
Was kommt da raus?
Ich gehe davon aus das dein Statement "INSERT INTO KundenDaten([SPALTE1], [SPALTE2], ...., [SPALTE*]) VALUES( .... )" lauten sollte.
 
Danke erstmals für deine Antowort und ja ich weiss es ist eingentlich eine zu grosse Aufgabe für einen Anfänger, aber ich dachte ich mache Ihm einen gefallen wenn ich es hinbekomme.

Ich hab die Daten bereits in der Console ausgegeben und die Daten kommen so raus wie ich sie eingegeben habe.
 
Ja finde ich ja nett von dir.
Es ist halt nur das man nicht mal eben sein Kundenverwaltungsystem wechseln kann usw. daher sollte man schon von Anfang an versuchen es "richtig" zu machen usw.

PS: Ich glaube ich habe deinen Fehler schon gefunden. Dir fehlen 2 ' im Statement.

.....
+ "VALUES(1150," + mainMenu.itemList.getFirmenFeld().getText() + ','
.....
+ mainMenu.itemList.getGeburtstagsFeld() + ','
+ "2014-07-25);";

Vor dem Firmenfeld wird kein ' hinzugefügt, und nach dem Datum auch nicht.
 
Hat leider nicht geklappt..

Er wechselt nicht so sein Kunderverwaltungssystem, er hat das Geschäft von seinem Vater übernommen und der hat die Kunden noch mit der Hand erfasst. Er hat noch kein Kundenverwaltungssystem, daher wollte er die Karteikarten des Vaters digitalisieren.
 

Zurück
Oben