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];
我在 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];