Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:java.lang.IllegalStateException:从第0行列-1获取字段插槽失败_Android_Database - Fatal编程技术网

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

Android:java.lang.IllegalStateException:从第0行列-1获取字段插槽失败,android,database,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 " + D

我正在制作一个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);
      }
public游标获取子项(字符串键){
游标c=db.rawQuery(“从”+数据库\表\导航中选择子项
+“其中键=?”,新字符串[]{key});
返回c;
}
试试{

对于(int k=0;k使用
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计算游标中列名的索引,并在中使用它


希望这会有所帮助。

使用
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计算游标中列名的索引,并在中使用它


希望这会有所帮助。

为什么每次迭代都要打开
db
?即使我不打开它,它也会给我同样的例外情况。为什么每次迭代都要打开
db
?即使我不打开它,它也会给我同样的例外情况