Android:java.lang.IllegalStateException:从第0行列-1获取字段插槽失败
我正在制作一个android数据库应用程序,当我使用游标从数据库中获取值时,可以在其中使用 它给了我以下的例外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
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
?即使我不打开它,它也会给我同样的例外情况