閱讀330 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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 20:19:49

  上一篇:go Android開發16——獲取網絡資源之基礎應用
  下一篇:go Android開發3——查看和輸出日誌信息