Ich muss ein kleines Programm entwickeln, das einige Daten in eine Oracle-Datenbank einfügt. Leider habe ich Probleme mit einem SQL Statement
und dessen Ausführung. Dies ist der Code, den ich verwende:
Dies ist der Teil, wo die Ausführung funktionieren sollte, aber ich bekomme den folgenden Fehler:
%Vor%Google Übersetzer für Ausnahmen lautet:
%Vor%Verwenden Sie diese Syntax nicht
%Vor%Verwenden Sie stattdessen diesen
%Vor% Tabellen können sich ändern. Felder können hinzugefügt / entfernt / neu geordnet werden - in diesem Fall würde Ihre INSERT
-Anweisung erneut brechen.
Natürlich, wie andere vorschlagen, sollten Sie vorbereitete Anweisungen verwenden, um SQL-Injection- und Syntaxfehler zu vermeiden ... Stellen Sie sich vor, item.getTitle()
wäre einer von diesen
Sie sollten PreparedStatements wirklich verwenden, glauben Sie uns ...
In diesem Fall ist das Problem jedoch sehr wahrscheinlich, dass Ihr Gebietsschema das Kommazeichen ( ,
) für den Dezimalpunkt verwendet.
Also wird 1/4 zu: 0,25
, nicht 0.25
, wie es der Datenbank gefällt!
Warum ist das ein Problem?
Schau dir das an:
%Vor%Beide werden als 2 Werte behandelt, nur der erste ist für uns nicht offensichtlich, die das Komma als Dezimalpunkt verwenden ... Also müssen Sie das Komma zu einem Punkt ändern, oder ändern Sie das Gebietsschema in US.
Richtig:
%Vor%Sie können das Gebietsschema der Zeichenfolgenformatierung mit String.format (Gebietsschema l, String-Format, Objekt ... Argumente) , indem Sie ein entsprechendes Gebietsschema angeben.