Android:java.lang.IllegalStateException:从第0行col -1获取字段槽失败

时间:2011-11-14 07:16:24

标签: android database

我正在创建一个android数据库应用程序,当我使用游标从数据库中获取值时 它给了我以下例外。

java.lang.IllegalStateException: get field slot from row 0 col -1 failed

我使用以下代码进行提取:

 public Cursor fetchChildren(String KEY_){

           Cursor c = db.rawQuery("SELECT children FROM " + DATABASE_TABLE_NAVIGATION
                   + " WHERE key_ = ?", new String[] {KEY_});
               return c;
           }



     try{   
     for(int k=0;k<n;k++){
       db.open();
     System.out.println("children are");
      Cursor cursor=db.fetchChildren(keys_a);
      if (cursor.moveToFirst()) // data?
            {
        System.out.println( cursor.getString(9)); 
     }
    }
 db.close();
    }
   catch(Exception e)
  {
  System.out.println(e);
      }

1 个答案:

答案 0 :(得分:4)

使用System.out.println( cursor.getString(0))代替System.out.println( cursor.getString(9));

或使用System.out.println(cursor.getString(cursor.getColumnIndex("children"));

您的逻辑问题:

您正在从数据库中获取单个列。所以游标只有一列(子)。如你所知,列索引从0开始(第一列为0,第二列为1 ......),你必须在getString()中传递0。替代方法是,在游标中搜索列索引并使用getString()传递该索引。 as getColumnIndex(java.lang.String)计算游标中列名的索引,并在getString(int)中使用它。

希望这会有所帮助。