SQLException beim Versuch, einen doppelten Wert in die Oracle-Datenbank einzufügen

8

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:

%Vor%

Dies ist der Teil, wo die Ausführung funktionieren sollte, aber ich bekomme den folgenden Fehler:

%Vor%

Google Übersetzer für Ausnahmen lautet:

%Vor%     
Roman C 21.04.2014, 16:03
quelle

4 Antworten

5

Sie können vorbereitete Anweisungen wie diese verwenden, die von Guallaume für den Kommentar vorgeschlagen wurden;

%Vor%     
mwangi 13.11.2012, 13:55
quelle
3

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

%Vor%     
Lukas Eder 13.11.2012 13:44
quelle
1

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.

    
ppeterka 13.11.2012 14:11
quelle
0

Diese Formatzeichenfolge wurde korrigiert.

%Vor%

Verwenden Sie nicht viele Werte für jedes Argument, verwenden Sie genau eine für jede einzelne, insgesamt sechs Werte.

    
Roman C 13.11.2012 14:34
quelle

Tags und Links