我使用jdbcTemplate将一些数据插入到DataBase Oracle中。不幸的是,我得到了这个错误:
java.sql.SQLSyntaxErrorException: ORA-01722: invalid Number首先,我将字符串转换为double:
Number number = nmFormat.parse(record[8]);
double doubleVLBalance = number.doubleValue();及之后:
String sqlSettlementBalance = "INSERT INTO STARR4.TBSETR_SETTLEMENT_BALANCE"+
"(DT_MOVEMENT,NU_CUSTOMER_REF, NU_MOD_CUSTOMER_REF,"+
"NU_HIERARCHICAL_NODE, CD_ACQUIRER, CD_PRODUCT,"+
"CD_BALANCE_TYPE, NU_CUSTOMER, VL_BALANCE, NU_CONTROL)"+
"VALUES ('" ...,'"+doubleVLBalance+"','"+sb.getNuControl()+"')";
jdbcTemplate.update(sqlSettlementBalance);字符串record8的值为"-0.34“。有什么解决这个问题的建议吗?
发布于 2017-06-28 19:08:59
如果你用引号环绕一个数字,它就变成了一个字符串。删除引号。
String sqlSettlementBalance = "INSERT INTO STARR4.TBSETR_SETTLEMENT_BALANCE"+
"(DT_MOVEMENT,NU_CUSTOMER_REF, NU_MOD_CUSTOMER_REF,"+
"NU_HIERARCHICAL_NODE, CD_ACQUIRER, CD_PRODUCT,"+
"CD_BALANCE_TYPE, NU_CUSTOMER, VL_BALANCE, NU_CONTROL)"+
"VALUES ('" ...,"+doubleVLBalance+",'"+sb.getNuControl()+"')";发布于 2017-06-28 19:21:13
正如前面提到的,你应该删除引号,但我建议不要
jdbcTemplate.update(sqlSettlementBalance);使用
jdbcTemplate.update(sqlSettlementBalance, Object... args);例如,如下所示:
String sqlSettlementBalance = "INSERT INTO STARR4.TBSETR_SETTLEMENT_BALANCE"+
"(DT_MOVEMENT,NU_CUSTOMER_REF, NU_MOD_CUSTOMER_REF,"+
"NU_HIERARCHICAL_NODE, CD_ACQUIRER, CD_PRODUCT,"+
"CD_BALANCE_TYPE, NU_CUSTOMER, VL_BALANCE, NU_CONTROL)"+
"VALUES ('"...,?,'"+sb.getNuControl()+"')";
jdbcTemplate.update(sqlSettlementBalance, doubleVLBalance);使用PreparedStatement参见示例this
https://stackoverflow.com/questions/44810640
复制相似问题