android中的arrayindexoutofbound错误,如何在数据库中插入时解决这个问题?

时间:2013-02-21 11:02:21

标签: android performance android-sqlite

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,这里有什么问题,我错过了什么?/

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个元素。