2012年5月1日 星期二

Index -1 requested, with a size of 1的問題原因


今天在使用Sqlite的cursor時出現以下錯誤訊息

05-02 02:54:56.928: E/AndroidRuntime(1660): android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

再來看一下官方文件

public abstract int getColumnIndex (String columnName)

Since: API Level 1
Returns the zero-based index for the given column name, or -1 if the column doesn't exist. If you expect the column to exist use getColumnIndexOrThrow(String) instead, which will make the error more clear.

他說到當某個欄位不存在時( -1 if the column doesn't exist),就會回傳-1,所以有可能是搜尋語句的欄位名稱打錯,但我又很清楚我欄位名稱有打對,結果我發現是因為沒有執行cursor.moveToNext()這一行,導致cursor的游標在資料位置的第一列的前面,所以會發生找不到資料返回-1的結果,自己的解決方式如下

if(cursor.getCount()>0)  
{
   while(cursor.moveToNext())
    {
 String test=cursor.getString(cursor.getColumnIndex("customer_want"));
 Log.i("Tag","這是cursor取得的值:"+test.toString());
    }
}

沒有留言:

張貼留言

星期、月份英文縮寫

中文 英文 3字母 縮寫 3字母 縮寫 2字母 縮寫 2字母 縮寫 1字母 縮寫 1字母 縮寫 其他 縮寫 星期日 Sunday SUN Sun SU Su S S 星期一 Monday MON Mon MO Mo M M 星期二 Tuesday TUE Tue TU ...