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-02 00:06:49