反正有没有阻止Java将我的双重转化为指数值?我有问题将其保存到我的数据库中.它一直告诉我它无法将我的VarChar转换为数字.
我做;
amt = oldAmt - amt;
amt = Math.abs(amt);
Run Code Online (Sandbox Code Playgroud)
并使用setter 将值放入amt中 ;
jvd.setDr_amt(amt);
Run Code Online (Sandbox Code Playgroud)
然后使用函数生成一个查询字符串,它给了我;
INSERT INTO jv ( id, dr_amt) VALUES (1, 1.595545786E7);
Run Code Online (Sandbox Code Playgroud)
dr_amt数据库中的数据类型是数字( 15,2 )
任何人?
我非常猜测你做了这样的事情:
connection.createStatement().executeUpdate(
"INSERT INTO my_table VALUES('" + myDouble + "')");
Run Code Online (Sandbox Code Playgroud)
不要这样做,原因如下:
以让JDBC处理数据类型的方式编写语句:
PreparedStatement stmt = connection.prepareStatement(
"INSERT INTO my_table VALUES(?)");
stmt.setDouble(1, myDouble);
stmt.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
如果您绝对必须在SQL字符串中内联您的double值而不是使用绑定值,请尝试使用BigDecimal序列化double,而不是:
new BigDecimal(myDouble).toString();
Run Code Online (Sandbox Code Playgroud)
由于您似乎在使用货币值进行操作,因此您应该将所有双打更改为BigDecimal,因为BigDecimalJava是SQL DECIMAL数据类型的最佳匹配
| 归档时间: |
|
| 查看次数: |
931 次 |
| 最近记录: |