我正在创建一个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);
}
答案 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)中使用它。
希望这会有所帮助。