我在表中设置一个字段名称varaince,在oracle中键入Number(20,3)..... 我从网页上获取数字作为字符串并将其转换为Double,因此我可以将其写回表格,如下所示
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]
^
当我做整数时,它并没有给我错误,但它没有写入表。
如何以表格从表单中写入该数字的方式转换字符串可以做些什么。任何帮助都会很好
答案 0 :(得分:1)
将Util.stringToDouble(this.getVariance())
更改为Util.stringToDouble(this.getVariance()).doubleValue()
。
<强>细节... 强>
stringToDouble
似乎正在返回java.lang.Double
个对象。这意味着它返回对实际携带double的对象的引用。这对于需要Object
的任何内容都很有用,因为Double
是Object
。
doubleValue
返回double
(小写)。使用此格式,返回实际的8字节数。这样更有效,因为它不需要对象分配,但在需要Object
时不起作用。但是,在这种情况下,由于您使用stringToDouble
,性能影响已经造成了损害。您可以考虑使用Double.parseDouble(...)
代替Util.stringToDouble(...).doubleValue()
答案 1 :(得分:0)
你真的需要把它转换为双倍?你可以这样做:
cstmt.setBigDecimal(7, new java.math.BigDecimal(this.getVariance()));