SQlite db恢复为默认值-android

SQlite db恢复为默认值-android,android,sqlite,default,Android,Sqlite,Default,我创建了一个游戏,让用户学习英语单词及其含义。每一个单词都有它的翻译,知识水平,单词的使用次数等等。。 所有这些数据都保存在数据库中。 这是我想让用户选择删除游戏的所有数据(只有时间、知识水平和其他stuf的数量,而不是单词和翻译) 我尝试检查数据库中的所有行并设置值(大部分为0)。 问题是大约有6000个单词,要花大约20秒来复习所有单词 妈妈,有没有更快的办法 我所做的是: public void resetData() { Cursor c = ourDatabase.query

我创建了一个游戏,让用户学习英语单词及其含义。每一个单词都有它的翻译,知识水平,单词的使用次数等等。。 所有这些数据都保存在数据库中。 这是我想让用户选择删除游戏的所有数据(只有时间、知识水平和其他stuf的数量,而不是单词和翻译)

我尝试检查数据库中的所有行并设置值(大部分为0)。 问题是大约有6000个单词,要花大约20秒来复习所有单词

妈妈,有没有更快的办法

我所做的是:

public void resetData() {

    Cursor c = ourDatabase.query(DATABASE_TABLE, null, null, null, null, null, null);
    ContentValues cvUpdate = new ContentValues();
    cvUpdate.put(KEY_TURNS, 0);
    cvUpdate.put(KEY_KNOWN, 1);
    cvUpdate.put(KEY_KNOWLEDGE, 0);
    cvUpdate.put(KEY_SHOWN, 0);
    cvUpdate.put(KEY_CURRECTANSWER, 0);
    cvUpdate.put(KEY_WRONGANSWER, 0);

    int i = 0;
    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
        i++;
        StaticData.mw.wordList.get(i).resetWord();
        ourDatabase.update(DATABASE_TABLE, cvUpdate, KEY_ROWID + "=" + i, null);
        StaticData.dialog.setProgress(i);

    }    

}
如果不使用,则每个SQL命令都会获得自己的自动事务,而事务开销在运行时间中占主导地位

执行多个命令时,应将它们包装到单个事务中:

db.beginTransaction();
试一试{
对于(…)
...
db.setTransactionSuccessful();
}最后{
db.endTransaction();
}
但是,如果要用相同的值更新所有行,只需使用一个命令即可:

ourDatabase.update(数据库表,cvUpdate,null,null);

谢谢!。我不知道用“null”代替每一行,改变所有行。但是你能详细说明你答案的第一部分吗。。如何使用显式事务?。我没有您使用的命令(begintTransaction…),如何设置它们?