Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

Aus Java nach Access Datenbank schreiben

Duke@Nukem / 1 Antworten / Flachansicht Nickles

Hallo Leute,

ich habe folgendes Problem.
Wir verwenden für eine Hausarbeit Java Struts.
Aus einer JSP Seite bekomme ich Variablen als String und Int übergeben.
Die lese ich über eine JavaBean ein.
In meiner JavaAction, möchte ich diese Variablen in eine Datenbank schreiben.
Ein System.out.println zeigt mir alle meine Variablen auch richtig an.

Das Problem ist, das ich in meine Int Felder sowohl Daten als auch Zahlen reinschreiben kann und er diese an die Access Datenbank richtig überträgt.
In den Strings funktioniert es nur mit Zahlen. Sobald ich dort Buchstaben eingebe bekomme ich folgende Fehlermeldung:

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 6 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.

Die Verbindung zur Datenbank besteht und in Access sind alle meine Felder Textfelder. Wenn ich nur Zahlen eingebe, funktioniert auch alles.

Statement statement = dbConnection.createStatement();
statement.executeUpdate("INSERT INTO Buch VALUES (" +
artikel.getIsbn() + ","
+ artikel.getArtikelNr() + ","
+ artikel.getAutor() + ","
+ artikel.getTitel() + ","
+ artikel.getVerlag() + ","
+ artikel.getErscheinungsJahr() + ","
+ artikel.getPreis() + ","
+ artikel.getBeschreibung() + ")");
statement.close();

Jemand eine Idee ?

bei Antwort benachrichtigen
Borlander Duke@Nukem „Aus Java nach Access Datenbank schreiben“
Optionen
Wenn ich nur Zahlen eingebe, funktioniert auch alles.
Stringst müsstest Du im SQL-Query natürlich in Anführungszeichen einschließen, wobei auch einfache (') erlaubt sind. Bei Zahlen ist es auch nie verkehrt dies in Anführungszeichen zu setzen. Keinesfalls verzichten sollte man allerdings auf eine vorheriges Escapen der Eingaben für die Übergabe ans SQL-Query - direkt von außen in die Abfrage übernommene Werte stellen sonst eine große Sicherheitslücke dar (Stichwort SQL-Injections)...


Gruß
Borlander
bei Antwort benachrichtigen