Android開發7——android.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 1
android中數據庫處理使用cursor時,遊標不是放在為0的下標,而是放在為-1的下標處開始的。
也就是說返回給cursor查詢結果時,不能夠馬上從cursor中提取值。
下麵的代碼會返回錯誤
User u = null;
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from user where id = ?", new String[] { id.toString() });
Integer uid = cursor.getInt(cursor.getColumnIndex("id"));
String uname = cursor.getString(cursor.getColumnIndex("name"));
float uamount = cursor.getFloat(cursor.getColumnIndex("amount"));
u = new User(uid, uname, uamount);cursor.close();
正確的用法
User u = null;
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from user where id = ?", new String[] { id.toString() });
if (cursor.moveToFirst())
{
Integer uid = cursor.getInt(cursor.getColumnIndex("id"));
String uname = cursor.getString(cursor.getColumnIndex("name"));
float uamount = cursor.getFloat(cursor.getColumnIndex("amount"));
u = new User(uid, uname, uamount);
}
cursor.close();
最後更新:2017-04-03 16:49:34