Sqlite:尝试从数据库中获取数组时出现 ArrayIndexOutOfBoundsException

Sqlite : ArrayIndexOutOfBoundsException when try to fetch array from database

我在 sqlite 中创建了一个 table,它给我 java.lang.ArrayIndexOutOfBoundsException 这是返回数组值时的代码。

    Cursor res = database.rawQuery("select "+QsDatabaseHelper.getItemName()+" from " + QsDatabaseHelper.getItemTableName(), null);
    String[] array = new String[res.getCount()];
    int i = 0;
    while(res.moveToNext()){
        String itemName = res.getString(res.getColumnIndex( QsDatabaseHelper.getItemName()));
        array[i] = itemName;
        Log.d("VALUE ",itemName+"name"); //There i geting all values
        i++;
    }
    return array[i]; //error showing this line

在我的片段中,我调用此函数以获取字符串 []

中的项目名称
           String[] ItemNameArray = new String[list_counts];
                    for (int i = 0; i < list_counts; i++) {
                        ItemNameArray[i] = listcatDb.itemname();
                    }

你只是 return 阵列。因为 i 值在 while 循环内增加。所以只需 return 数组然后在主线程中使用数组值,或者如果你想 return 字符串使用 i-1;

return array; 

当索引为负或大于或等于数组大小时抛出异常ArrayIndexOutOfBounds。 在 while 循环中 'i' 的值超过了数组的大小.. 所以它应该像

return array[i-1];

而不是,

return array[i];