我正在构建一个包含内置数据库的Android应用,我经常在三星Galaxy S3设备上测试它。
我现在遇到了一个问题,因为我注意到即使我使用SQLiteBrowser在我的计算机上对它进行了更改,应用程序上的SQLite数据库也没有更新。
我已经确认我确实正在将更改写入数据库,然后在设备上从头开始重新运行应用程序,但是应用程序执行的查询结果仍然保持不变,尽管数据已更改。
我已经尝试更新数据库的版本,但这给了我各种错误,因为它要我写一个我认为不需要的更新脚本。
有谁知道如何在设备上刷新数据库中的数据?
答案 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命令