我正在尝试将csv文件中的数据读入我创建的数据库中的表中。到目前为止,我已经为3个表完成了操作,因此第四个表的代码应该相对相同,但是我仍然收到错误消息
线程“ main”中的异常java.lang.ArrayIndexOutOfBoundsException:索引3超出了长度3 在Verbindung.main(Verbindung.java:136)
这应该是一个非常简单的问题,但由于阵列中的索引和变量数看起来可以很好地匹配,所以我看不到哪里出了错。
这是我的代码
// Parsing CSV file Facebookapp
try {
Scanner inputStream3 = new Scanner(file3);
//inputStream.useDelimiter("[;/n]");
while(inputStream3.hasNext()) {
String data3 = inputStream3.next();
System.out.println(data3);
String[] values3 = data3.split(";");
System.out.println(data3);
//if(values.toString().contains(";;;")) break;
int PRODNUM = Integer.parseInt(values3[0]);
double V_ERSION = Double.parseDouble(values3[1]);
String PHONE_ASSOC = values3[2];
int accountNUM = Integer.parseInt(values3[3]);
//creating the object FBapp with the relevant parameters
FBapp fbapp = new FBapp(PRODNUM, V_ERSION, PHONE_ASSOC, accountNUM);
facebookapp.add(fbapp);
}
inputStream3.close();
}
catch(FileNotFoundException d) {
d.printStackTrace();
}
try {
// establish connection to database
Class.forName("oracle.jdbc.driver.OracleDriver");
String database = "jdbc:oracle:thin:@oracle-lab.cs.univie.ac.at:1521:lab";
String user = "a01547605";
String pass = "dbs19";
Connection con = DriverManager.getConnection(database, user, pass);
Statement stmt = con.createStatement();
String sql3 = "INSERT into facebookapp(PRODNUM, V_ERSION, PHONE_ASSOC, accountNUM) values(?,?,?,?)";
PreparedStatement ps = con.prepareStatement(sql3);
final int batchSize = 100;
int count = 0;
for(FBapp d: facebookapp) {
ps.setInt(1, d.getPRODNUM());
ps.setDouble(2, d.getV_ERSION());
ps.setString(3, d.getPHONE_ASSOC());
ps.setInt(4, d.getaccountNUM());
ps.addBatch();
if(++ count% batchSize == 0) {
ps.executeBatch();
}
}
ps.close();
}
catch (Exception e) {
System.err.println(e.getMessage());
}
我的CSV文件如下所示,这是第100行
1 1.00 Iphone 100
同样,当我打印出在剪切前从CSV文件中读取的内容时,它就是这样
1;1.00;Iphone
答案 0 :(得分:0)
HashRouter
是打印“ 1; 1.00; Iphone”的内容,应该是CSV文件的内容。该行上只有三个值,因此,由于您对程序进行了硬编码,期望在System.out.println(data3);
处出现第四个值,因此此处将失败。
您还打印了data3两次。尝试在第二条语句中打印出数组value3的内容,以捕获代码错误。