如何更新我正在使用新应用程序测试的数据库?

时间:2014-10-16 22:07:09

标签: android sqlite refresh

我正在构建一个包含内置数据库的Android应用,我经常在三星Galaxy S3设备上测试它。

我现在遇到了一个问题,因为我注意到即使我使用SQLiteBrowser在我的计算机上对它进行了更改,应用程序上的SQLite数据库也没有更新。

我已经确认我确实正在将更改写入数据库,然后在设备上从头开始重新运行应用程序,但是应用程序执行的查询结果仍然保持不变,尽管数据已更改。

我已经尝试更新数据库的版本,但这给了我各种错误,因为它要我写一个我认为不需要的更新脚本。

有谁知道如何在设备上刷新数据库中的数据?

3 个答案:

答案 0 :(得分:1)

解决此问题的最简单方法是进入应用程序管理器,选择您的应用程序,然后点击"清除缓存"。这将删除应用程序创建的所有原始数据库。即使在卸载原始应用程序之后,Android设备也会维护此缓存以保留数据库(出于某些原因以及何时删除它们取决于制造商的固件)。正因为如此,即使你看到你正在创建新数据库,android仍在查询旧数据库。

然后,您可以全新安装您的应用,这应该可以解决问题。除此之外,您唯一的选择是在执行升级的onUpgrade()方法中编写升级脚本。

答案 1 :(得分:1)

您可能没有写入设备上的数据库,而是写入计算机上的文件夹中。您可以尝试让应用程序本身对数据库进行一些测试更新,以便您知道它正在更新设备上的SQLite数据库:

public class SQLHelper extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION = 2;
    private static final String DATABASE_NAME = "name goes here";
    private static final String[] KEYS = {"column","names","go","here"};
    private static final String DICTIONARY_TABLE_NAME = "tablename";
    private static final String DICTIONARY_TABLE_CREATE =
                "CREATE TABLE " + DICTIONARY_TABLE_NAME + " (" +
                        KEY[0] + " TEXT, " +
                        KEY[1] + " TEXT, " . . .;

    public SQLHelper(Context context) {
        super(context, DATABASE_NAME , null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // creates table if does not exist
        db.execSQL(DICTIONARY_TABLE_CREATE);

        // . . . update database with test info here...
        db.execSQL("INSERT INTO . . .");
        db.execSQL("UPDATE . . .");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }
}

答案 2 :(得分:0)

您可以使用ADB启动shell并使用sqlite直接对数据库http://developer.android.com/tools/help/sqlite3.html

执行操作

启动sqlite3后,只需执行常规SQL命令