java - CursorIndexOutOfBoundsException:请求索引 21,大小为 21
问题描述
我尝试记录姓名和年龄索引并收到超出范围的错误,我不知道为什么。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SQLiteDatabase database = this.openOrCreateDatabase("Users"
, MODE_PRIVATE, null);
database.execSQL("CREATE TABLE IF NOT EXISTS users (name " +
"VARCHAR, age INT(3))");
database.execSQL("INSERT INTO users (name, age) VALUES ('Nick', 28)");
database.execSQL("INSERT INTO users (name, age) VALUES ('Alon', 25)");
Cursor cursor = database.rawQuery("SELECT * FROM users", null);
int nameIndex = cursor.getColumnIndex("name");
int ageIndex = cursor.getColumnIndex("age");
cursor.moveToFirst();
while (cursor != null && cursor.getCount() > 0){
Log.i("name", cursor.getString(nameIndex));
Log.i("age", cursor.getString(ageIndex));
Toast.makeText(this, "hi", Toast.LENGTH_SHORT).show();
cursor.moveToNext();
}
}
}
我尝试在stackoverflow中寻找解决方案,但没有找到任何东西
如标题所示,我收到错误消息
解决方案
尝试这个
if(cursor.moveToFirst()){
do {
String name = cursor.getString(nameIndex);
String age = cursor.getString(ageIndex );
}while (result.moveToNext());
}
您可以阅读此文档以很好地添加 sqlite。
推荐阅读
- css - CSS 文件未在 localhost 上完全加载
- python - 如何以最佳方式在 PySpark 中以两个条件连接两个表
- c# - c# excel将多色文本写入同一个单元格
- mysql - 在 MySQL 中优化和分区具有 3 亿条记录的大表的最佳方法
- java - JAVA:我需要按降序对数组中的系列进行排序
- android - android 应用程序中使用的 AWS Appsync 突变功能无法将数据插入 DynamoDB
- sas - SAS 不评估 %PUT 的内容
- python - 使用 python 在 Visual Studio 代码中开发应用程序
- react-native - 如何在 Scrollview (React Native) 中禁用反弹效果?
- reactjs - Setting variable with ReactJS's useState hook does not work