2016-03-21 56 views
0

我希望當有人可以告訴我,爲什麼我收到錯誤:「異常線程‘main’java.lang.ArrayIndexOutOfBoundsException:1」ArrayIndexOutOfBoundsException異常錯誤使用opencsv

我使用opencsv從插入數據一個csv和代碼確實工作,因爲數據按預期插入到表中。但是我得到的錯誤。

下面是我的代碼:

PreparedStatement sql_statement = null;   
    String jdbc_insert_sql = "INSERT INTO wifi_users(email, first_name, last_name, gender, birthday, opted_in) VALUES (?, ?, ?, ?, ?, ?)"; 
    sql_statement = conn.prepareStatement(jdbc_insert_sql); 

    /* Read CSV file in OpenCSV */ 
    String inputCSVFile = "/Users/Gerry/Documents/workspace/sql_out_connection/users.csv"; 
    CSVReader reader = new CSVReader(new FileReader(inputCSVFile)); 

    /* Variables to loop through the CSV File */ 
    String [] nextLine; /* for every line in the file */ 
    int lnNum = 0; /* line number */ 
    while ((nextLine = reader.readNext()) != null) { 
      lnNum++;      
      sql_statement.setString(1,(nextLine[0])); 
      sql_statement.setString(2,(nextLine[1])); 
      sql_statement.setString(3,(nextLine[2])); 
      sql_statement.setString(4,(nextLine[3])); 
      sql_statement.setString(5,(nextLine[4])); 
      sql_statement.setDouble(6,Double.parseDouble(nextLine[5])); 
      /* execute the insert statement */ 
      sql_statement.executeUpdate(); 
    } 

任何人有任何想法,爲什麼我得到這個錯誤?

回答

2

您的CSV文件中的其中一行的預期最小值小於6值(0-5),因此爲ArrayIndexOutOfBoundsException。

在繼續數據庫更新之前,您應該驗證您是否需要6個值。

您不需要圍繞您的值添加括號順便說一句。更好的是這樣的...

sql_statement.setString(1, nextLine[0]); 
+0

感謝馬諾。你是對的,有1行在2個值之間缺少一個逗號,因此被解釋爲5而不是6. – user1523236

+0

太棒了。很高興爲您解決它。你會很樂意把這個標記爲你的答案嗎? :) – ManoDestra

相關問題