CursorIndexOutOfBoundsException 是什么意思?
What does CursorIndexOutOfBoundsException mean?
InfoAPI.java
当我点击保存按钮时,它崩溃了。我该如何解决这个问题?
public long insertTimeSheet(String name,String weather,String date,String status)
{
database=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(MyDatabaseHelper.Name,name);
values.put(MyDatabaseHelper.Weather,weather);
values.put(MyDatabaseHelper.Date,date);
values.put(MyDatabaseHelper.Status, status);
Cursor cursor = database.rawQuery("SELECT MAX(ID) FROM "+ MyDatabaseHelper.TABLE_INFO, null);
database.insert(MyDatabaseHelper.TABLE_INFO, null, values);
return cursor.getLong(0);
}
LogCat
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:74)
at com.example.project.project.API.InfoAPI.insertTimeSheet(InfoAPI.java:42)
我已经发布了关于 Foreign Key
的问题。
A CursorIndexOutOfBoundsException
表示您尝试获取或写入数据的 Cursor
当前未位于有效的结果行中。请特别注意,从 rawQuery()
获得的 Cursor
最初位于第一行之前。这在一定程度上是明智的,因为在查询 returns 零行的情况下,它是 Cursor
可以 定位的唯一位置。
您通常会使用游标的定位方法将其移动到您要访问的行。为了按顺序处理所有行,通常是 moveToNext()
。还有moveToFirst()
、moveToLast()
、moveToPrevious()
、moveToPosition()
、move()
、
public long insertTimeSheet(String name,String weather,String date,String status){
database=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(MyDatabaseHelper.Name,name);
values.put(MyDatabaseHelper.Weather,weather);
values.put(MyDatabaseHelper.Date,date);
values.put(MyDatabaseHelper.Status, status);
database.insert(MyDatabaseHelper.TABLE_INFO, null, values);
Cursor cursor = database.rawQuery("SELECT MAX(ID) FROM "+ MyDatabaseHelper.TABLE_INFO, null);
if(cursor.getCount()>0){
cursor.moveToFirst();
return cursor.getLong(0);
}
return 0;
}
InfoAPI.java
当我点击保存按钮时,它崩溃了。我该如何解决这个问题?
public long insertTimeSheet(String name,String weather,String date,String status)
{
database=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(MyDatabaseHelper.Name,name);
values.put(MyDatabaseHelper.Weather,weather);
values.put(MyDatabaseHelper.Date,date);
values.put(MyDatabaseHelper.Status, status);
Cursor cursor = database.rawQuery("SELECT MAX(ID) FROM "+ MyDatabaseHelper.TABLE_INFO, null);
database.insert(MyDatabaseHelper.TABLE_INFO, null, values);
return cursor.getLong(0);
}
LogCat
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460)
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:74)
at com.example.project.project.API.InfoAPI.insertTimeSheet(InfoAPI.java:42)
我已经发布了关于 Foreign Key
的问题。
A CursorIndexOutOfBoundsException
表示您尝试获取或写入数据的 Cursor
当前未位于有效的结果行中。请特别注意,从 rawQuery()
获得的 Cursor
最初位于第一行之前。这在一定程度上是明智的,因为在查询 returns 零行的情况下,它是 Cursor
可以 定位的唯一位置。
您通常会使用游标的定位方法将其移动到您要访问的行。为了按顺序处理所有行,通常是 moveToNext()
。还有moveToFirst()
、moveToLast()
、moveToPrevious()
、moveToPosition()
、move()
、
public long insertTimeSheet(String name,String weather,String date,String status){
database=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put(MyDatabaseHelper.Name,name);
values.put(MyDatabaseHelper.Weather,weather);
values.put(MyDatabaseHelper.Date,date);
values.put(MyDatabaseHelper.Status, status);
database.insert(MyDatabaseHelper.TABLE_INFO, null, values);
Cursor cursor = database.rawQuery("SELECT MAX(ID) FROM "+ MyDatabaseHelper.TABLE_INFO, null);
if(cursor.getCount()>0){
cursor.moveToFirst();
return cursor.getLong(0);
}
return 0;
}