public void fetchcontent() throws IOException
{
this.open();
ContentValues values = new ContentValues();
String csvFilename = "/mnt/sdcard/content.csv";
// ArrayList<String> al=new ArrayList();
CSVReader csvReader = new CSVReader(new FileReader(csvFilename));
String row[] = null;
while((row = csvReader.readNext()) != null) {
st1 = row[0];
st2= row[1];
st3= row[2];
st4= row[3];
st5= row[4];
values.put(DatabaseHandler.Column1,st1);
values.put(DatabaseHandler.Column2,st2);
values.put(DatabaseHandler.Column3,st3);
values.put(DatabaseHandler.Column4,st4);
values.put(DatabaseHandler.Column5,st5);
database.insert(DatabaseHandler.Table_Name, null, values);
}
csvReader.close();
MainActivity.tt1.append("\ncontent table created");
}
这是我在我创建的表中插入的代码,它给出了java lang arrayindexoutofbound异常错误如何删除,请帮助我的logcat显示这个
02-21 16:27:54.308: E/AndroidRuntime(12511): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.webdata/com.example.webdata.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
好吧,所以你们有些人提到我确实删除了st4和st5语句并且它工作了一段时间但是现在我得到索引2的相同错误现在我的数组长度是2但是你们之前都建议它是3,这里有什么问题,我错过了什么?/
答案 0 :(得分:1)
st4= row[3];
因为数组行的长度为3而无效。
大多数人都告诉你完全删除使用第3和第4个字段,但是如果你想使用默认值,那么你应该为此添加一个检查,如果没有相应的数据,则在数据库中插入空数据。 / p>
这样的事情:
if (row[3] != null) {
st3 = row[3];
} else {
st3 = "";
}
答案 1 :(得分:0)
这表明您的CSV文件:/mnt/sdcard/content.csv
或CSV文件中的至少一行只有三列。
请参阅:java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
表示数组中只有3个项目以及您在索引3处尝试访问的项目(最多为2)
不用尝试:
st4= row[3];
st5= row[4];
和
values.put(DatabaseHandler.Column4,st4);
values.put(DatabaseHandler.Column5,st5);
答案 2 :(得分:0)
java.lang.ArrayIndexOutOfBoundsException: length=3; index=3*emphasized text*
异常表示该数组包含3个元素,但您尝试访问5个元素。