使用java读取csv时出现无效数字异常

时间:2017-07-10 07:39:52

标签: java oracle csv

我正在阅读csv文件并使用java存储到oracle数据库中 我的数据库结构是:

Name          Null Type          
------------- ---- ------------- 
DATE_D             VARCHAR2(800) 
DESCRIPTION        VARCHAR2(800) 
TRANSACTIONID      VARCHAR2(800) 
CREDIT_AMOUNT      NUMBER(8,2)   
DEBIT_AMOUNT       NUMBER(8,2)   
REMAINING          NUMBER(8,2)   
ODAMOUNT           NUMBER(8,2)   
ENTEREDBY          VARCHAR2(800) 
REMARKS            VARCHAR2(800)

直到300记录程序正确插入记录无一例外 第300条记录是:

30/01/2017 17:36:19 ICCDMR AGENT COMMISSION OLKB9O  0.17    0   2744.63 0  INHYD03904375S   ICCDMR AGENT COMMISSION - 9550681786

301记录是这样的:

30/01/2017 17:33:49 ICCDMR AGENT COMMISSION OLKB24  0.08    0   2744.46 0   INHYD03904375S  ICCDMR AGENT COMMISSION - 7097545406

我想知道我在这里得到的无效数字异常是什么。 这是我的java代码:

while ((line = br.readLine()) != null) {
        linecount++;
        String[] value = line.split(",");
        if (linecount != 1) {
            value1 = value[0].split(" ");
            System.out.println(value1[0]);
            System.out.println(value1[1]);
            String sql = "insert into HARMS( date_d,time_t,Description ,TransactionId,"
                        + "Credit_Amount,Debit_Amount ,Remaining,OdAmount ,EnteredBy,Remarks)"
                        + "values('" + value1[0] + "','" + value1[1] + "','" + value[1] + "','" 
                        + value[2] + "','" + value[3] + "','" + value[4] + "','" + value[5] + "','" 
                        + value[6] + "','" + value[7] + "','" + value[8] + "')";
            ps = cn.prepareStatement(sql);
            int c = ps.executeUpdate();
       }
}

请让我离开这个。

1 个答案:

答案 0 :(得分:0)

我假设TIME_T is also VARCHAR2 column present in your table,但你错过了在你的问题中写下来。试试以下代码:

String sql = "INSERT INTO HARMS(DATE_D, TIME_T, DESCRIPTION, TRANSACTIONID, CREDIT_AMOUNT, DEBIT_AMOUNT, REMAINING, ODAMOUNT, ENTEREDBY, REMARKS)"+
                " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
ps = cn.prepareStatement(sql);
ps.setString(1, value1[0]);
ps.setString(2, value1[1]);
ps.setString(3, value[1]);
ps.setString(4, value[2]);
ps.setFloat(5, Float.parseFloat(value[3]));
ps.setFloat(6, Float.parseFloat(value[4]));
ps.setFloat(7, Float.parseFloat(value[5]));
ps.setFloat(8, Float.parseFloat(value[6]));
ps.setString(9, value[7]);
ps.setString(10, value[8]);
int c=ps.executeUpdate();