2017-06-28 8 views
2

私はjdbcTemplateを使用してDataBase Oracleにデータを挿入しています。残念ながら、私はこのエラーを取得しています:負の数を挿入する - ORA-01722

java.sql.SQLSyntaxErrorException: ORA-01722: invalid Number 

まず第一に、私は二重に文字列を変換します

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); 

列レコードの値が[ 8]は「-0.34」である。この問題を解決するための提案はありますか?

答えて

3

数字を引用符で囲むと、数字が文字列になります。引用符を削除します。言及として

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()+"')"; 
+0

パーフェクト、それは今働いている!ありがとう! – Stankevix

3

引用符を削除する必要があります前に、私は、たとえば

jdbcTemplate.update(sqlSettlementBalance, Object... args); 

を使用して

jdbcTemplate.update(sqlSettlementBalance); 

の代わりにお勧めします。このような何か:使用

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はexampを参照le this