Sqlite插入成功运行,但是对数据库没有任何影响吗?

时间:2019-08-25 17:13:22

标签: java android sqlite insert android-sqlite

我正在尝试向表中添加一行。看起来一切正常,但是该行未添加到数据库中。当我检查数据库时,它没有变化。

我正在尝试使用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的列。

1 个答案:

答案 0 :(得分:0)

您需要更改访问返回到游标的行的循环:

    Cursor cursor = database.rawQuery("SELECT * FROM CACHE",null);
    while (cursor.moveToNext()) {
        String a = cursor.getString(0); 
        // do something
    }

在调用rawQuery()之后,光标的索引在第一行之前(如果存在)。
在没有调用moveToFirst()moveToNext()的情况下,光标不会前进到第一行或下一行。