我正在尝试向表中添加一行。看起来一切正常,但是该行未添加到数据库中。当我检查数据库时,它没有变化。
我正在尝试使用SqliteDatabase提供的带有以下代码的insert方法添加它。
public void saveToCache(String word) {
ContentValues contentValues = new ContentValues();
contentValues.put("word", word);
long value = database.insert("CACHE",null, contentValues);
//The code below is for debug purposes, to see the if values are added
//But when executed it gives
//android.database.CursorIndexOutOfBoundsException: Index -1 requested,
//with a size of 13
Cursor cursor = database.rawQuery("SELECT * FROM CACHE",null);
for(int i=0; i< cursor.getCount();i++){
String a = cursor.getString(0); //This is where the exception above happens
}
}
value属性似乎是正确的,每次使用该函数时,它都会增加1。但是下面的rawQuery方法给出了我在注释中提供的错误。
p.s:表“ CACHE”只有一个名为word的列。
答案 0 :(得分:0)
您需要更改访问返回到游标的行的循环:
Cursor cursor = database.rawQuery("SELECT * FROM CACHE",null);
while (cursor.moveToNext()) {
String a = cursor.getString(0);
// do something
}
在调用rawQuery()
之后,光标的索引在第一行之前(如果存在)。
在没有调用moveToFirst()
或moveToNext()
的情况下,光标不会前进到第一行或下一行。