06. oktober 2007 - 19:04Der er
4 kommentarer og 1 løsning
spørgsmål angående oracles brug af float i forhold til java
Jeg sidder og udvikler en applikation hvor at man skal trække en float ud af en oracle database. I den forbindelse får jeg følgende meddelelse..
Could not invoke method "product_SelectAll" on the object named "database" because: java.sql.SQLException: java.lang.NumberFormatException - '3,35'
Problemet ser ud til at være at oracle gemmer floats med komma mens java forventer punktum for at definere floating points.
Nu sidder jeg og udvikler i BEA weblogic hvor database kald foregår gennem en java kontrol klasse. Dette betyder at jeg ikke har mulighed for at manipulere dataen som bliver trukket ud af DB inden det præsenteres for bruger.
Ee der nogen som har en ide til hvor jeg kommer uden om dette problem?
/** * @jc:sql statement="SELECT id,product_code,product_name,max,sortvalue,price FROM products ORDER BY sortvalue ASC" */ javax.sql.RowSet product_SelectAll();
Synes godt om
Slettet bruger
07. oktober 2007 - 10:13#3
Hvis du havde kunnet styre sessionen var det noget med
ALTER SESSION SET NLS_NUMERIC_CHARACTERS=",.";
for at få komma som decimalseparator og punktum som gruppe-separator ved tusind.
Men ellers må du konvertere data på vej ind og ud af databasen:
Ud af databasen: trim(translate(TO_CHAR(...), ',.', '.,')) Ind i databasen: to_number(..., '9999999D9999', ' NLS_NUMERIC_CHARACTERS = '',.'''))
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.