[HSQL] Numeric value out of range

Milo

Bekanntes Mitglied
Hallo,

ich experimentiere erstmalig mit HSQL und JAVA. Bei einen meiner Versuche habe ich eine "Numeric value out of range" Exception bekommen. Die Tabelle besteht (bis auf die ID) nur aus DOUBLE-Werten. Die beiden mit Abstand größten Werte waren E17 und E23. Wo kann ich nachlesen, wie groß der Definitionsbereich ist bei HSQL? In der Doku habe ich so nichts gefunden. Solche Werte sind im Übrigen die absolute Ausnahme und kommen im Normalfall nicht vor!

Wie umgehe ich diese Ausnahme geschickt? Muss ich jeden Double-Wert, den ich eintrage, vorab prüfen, ob er in ein bestimmtes Intervall fällt? Gibt es ggf. einen besseren Datentyp für meine Anwendung? Rein zum Verständnis: Warum kann ich meine Berechnung in JAVA noch problemlos durchführen und bekomme erst beim Speichern in der Datenbank Probleme mit dem Typ?

Wäre nett, wenn mir einer ein wenig auf die Sprünge hilft ;-)
Gruß Micha
 

Milo

Bekanntes Mitglied
Hi raiL,

Danke für Deine Antwort. Ich habe die Tabelle in OOO zusammengebaut und hänge mal einen Screenshot ran. Alle Spalten haben DOUBLE-Werte (Bis auf die erste und letzte).

Gruß Micha
 

Anhänge

  • db_schema.png
    db_schema.png
    4,9 KB · Aufrufe: 41
G

Gelöschtes Mitglied 5909

Gast
In HyperSQL, REAL, FLOAT, DOUBLE are equivalent and all mapped to double in Java. These types are defined by the SQL Standard as approximate numeric types. The bit-precision of all these types is 64 bits.

mh das ist sehr strange. hast du mal versucht mit nem sql client so einen wert zu inserten? Mach mal eine hsqldb auf mit einer tabelle/spalte und füge den wert ein der fehlschlägt.
 

Milo

Bekanntes Mitglied
Hallo raiL,

hast du mal versucht mit nem sql client so einen wert zu inserten?
Ja, da kommt die selbe Fehlermeldung (siehe Screenshot). Ich habe das INSERT genommen, welches aus meiner Java-Anwendung heraus erzeugt wurde und fehlschlug. Die Werte selbst werden also innerhalb der Anwendung bestimmt.

Micha
 

Anhänge

  • db_insert_out_of_range.png
    db_insert_out_of_range.png
    17,3 KB · Aufrufe: 38
G

Gelöschtes Mitglied 5909

Gast
tja dass sieht dann für mich so aus als wäre die Zahl wirklich zu groß. Ich frage mich nur, ob der Wert dann in deiner Java App in das Double passt oder ob du einnen overflow hast, ihn aber nicht bemerkst.

DECIMAL and NUMERIC with decimal fractions are mapped to java.math.BigDecimal and can have very large numbers of digits. In HyperSQL the two types are equivalent. These types, together with integral types, are called exact numeric types.

Probier doch mal einen der beiden Typen aus, vielleicht gehts damit :)
 

Milo

Bekanntes Mitglied
Hi,

Ich frage mich nur, ob der Wert dann in deiner Java App in das Double passt oder ob du einnen overflow hast, ihn aber nicht bemerkst.
Die großen Zahlen deuten schon darauf hin, dass bei der Berechnung etwas schief gelaufen ist. Der Nutzer soll das aber auch bemerken (also sehen) und soll nicht mit einer Fehlermeldung, dass sich die Daten nicht speichern ließen, irritiert werden. Wenn ich mit Double.MAX_Value ausgeben lasse (1.7976931348623157E308), habe ich wohl noch Spielraum beim Speichern, oder kann ich hier so nicht argumentieren?

Probier doch mal einen der beiden Typen aus, vielleicht gehts damit :)
Nein, Kanonen auf Spatzen, würde ich sagen ;-)

Gruß Micha
 

Milo

Bekanntes Mitglied
Hallo,

ich habe das Prolem nun in den Griff bekommen, indem ich mit einem PreparedStatement arbeite. Vorher hatte ich die SQLs per String.format(...) zusammengebaut - nun gehts, wie ich es wollte.

Schöne Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Daten HSQL-DB Datenbankprogrammierung 2
J Hibernate + HSQL embedded Datenbankprogrammierung 2
D Projekt mit HSQL-Datenbank exportieren Datenbankprogrammierung 5
S Hibernate in Verbindung mit Hsql Datenbankprogrammierung 2
T HSQL einbinden !? Datenbankprogrammierung 6
P Selbstreferenz in Hibernate HSQL Datenbankprogrammierung 10
ARadauer Hibernate und HSQL DB Problem Datenbankprogrammierung 4
T HSQL: verständnis Frage Datenbankprogrammierung 2
C HSQL Basics Datenbankprogrammierung 13
W Prüfem ob HSQL Datenbank erreichbar ist. Datenbankprogrammierung 3
D HSQL problem jar erstellung Datenbankprogrammierung 7
alexpetri hsql statement problem Datenbankprogrammierung 3
alexpetri hsql als flatfile Datenbankprogrammierung 8
G Hibernate Tutorial: Starten einer HSQL DB- Verbindung Datenbankprogrammierung 7
T HSQL - relative Pfadangabe zur DB Datenbankprogrammierung 2
T HSQL => Tabelle Fragebogen Datenbankprogrammierung 2
S Verbindung mit einer lokalen Datenbank namens hsql DB Datenbankprogrammierung 9
E Datentyp numeric abfragen? Datenbankprogrammierung 2
I Hibernate Predicate mit IN Clause "Unaware how to convert value to requested type" Datenbankprogrammierung 0
ma095 value NULL- Datenbank Postgresql Spring - intellij community Datenbankprogrammierung 0
D MySQL SQLException time zone value is unrecognized Datenbankprogrammierung 2
C Java MySQL check if value exists in database Datenbankprogrammierung 2
zhermann Data truncation: Incorrect date value: 'null' for column Datenbankprogrammierung 31
D MySQL Suche nach Max Value in einer Tabelle Datenbankprogrammierung 7
K Derby/JavaDB '<columnName>' is not a column in table or VTI '<value>'. Datenbankprogrammierung 12
AMStyles Kann Wert nicht speichern (MAX VALUE) Datenbankprogrammierung 9
L MySQL Column count doesn't match value count at row 1 Datenbankprogrammierung 9
E Data truncation Incorrect datetime value Datenbankprogrammierung 2
N suche embedded key-value-datenkank Datenbankprogrammierung 2
F Oracle Zeilenumbruch in DB-Value erkennen Datenbankprogrammierung 2
F Derby/JavaDB Exception - Cannot accept Null Value (help) Datenbankprogrammierung 10
R Hibernate Composite-ID mit Autogenerated Value Datenbankprogrammierung 3
G [hibernate] different object with the same identifier value Datenbankprogrammierung 5
F column count doesn't match value count at row 1 Datenbankprogrammierung 6

Ähnliche Java Themen


Oben