2011-05-13 59 views
0

我有一個字段名稱varaince在表中設置爲類型數字(20,3)在oracle ..... 我從網頁獲取字符串的數字和將其轉換爲加倍,這樣我可以把它寫回表如下所示需要幫助轉換字符串類型數字(20,3)

if ((this.getVariance() != null) && (this.getVariance().length() > 0)) 
       cstmt.setDouble(7,Util.stringToDouble(this.getVariance())); 
      else 
       cstmt.setNull(7,OracleTypes.NUMBER); 

,但我得到這個錯誤

compile: 
    [exec] com\sample\common\javabean\ExampleBean.java:261: cannot resolve symbol 
    [exec] symbol : method setDouble (int,java.lang.Double) 
    [exec] location: interface java.sql.CallableStatement 
    [exec]        cstmt.setDouble(7,Util.stringToDouble(this.getVariance())); 
    [exec]   

        ^

我在做samething爲整它並沒有給我的錯誤,但它沒有寫信給桌子。

可以做什麼來轉換字符串的方式,表格會從表格中寫入該數字。任何幫助將是好的

回答

0

你真的需要將它轉換成雙精度嗎?你可以這樣做:

cstmt.setBigDecimal(7, new java.math.BigDecimal(this.getVariance())); 
+0

我試過這種方式,但它設置爲空而不是我放入的數字 – jack 2011-05-13 18:54:59

1

更改Util.stringToDouble(this.getVariance())Util.stringToDouble(this.getVariance()).doubleValue()

細節...

stringToDouble似乎返回java.lang.Double對象。這意味着它返回一個對象的引用,它實際上攜帶了double對象。由於DoubleObject,所以對於需要Object的任何情況都很有用。

doubleValue返回double(小寫)。用這種格式,返回實際的8字節數。這是更高效的,因爲它不需要對象分配,但在需要Object時不起作用。但是,在這種情況下,由於您使用的是stringToDouble,因此性能影響已損壞。你可以考慮使用Double.parseDouble(...)而不是Util.stringToDouble(...).doubleValue()

+0

它的工作,但其設置爲null值而非數字我把它放在 – jack 2011-05-13 18:54:33

+0

嘗試設置類似'40.5'一個硬編碼值。 ('cstmt.setDouble(7,40.5)') – 2011-05-13 19:11:33

+0

甚至硬編碼設置爲空..你知道什麼可能是該原因 – jack 2011-05-13 19:41:03