2014-10-16 145 views
0

我正在构建一个包含内置数据库的Android应用程序,我经常在我的Samsung Galaxy S3设备上对其进行测试。 ,如何更新我使用新应用测试的数据库?

我有一个问题,然而现在,因为我注意到,在应用程序中的SQLite数据库没有更新即使我使用SQLiteBrowser进行更改我的电脑上。

我核实,我确实写的变化到数据库,然后从头开始重新运行该应用的设备上,但是,仍然由应用程序执行时,查询结果不变,尽管改变的数据。

我试图更新数据库的版本,而是因为它要我写一个更新脚本,我不认为是必要的什么,我需要做的这给了我各种错误。

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

+0

你怎么分贝从你的补偿传输到设备?另外,你的Galaxy S3是否已经扎根? – Jakar 2014-10-16 22:28:24

回答

1

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

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

+0

这工作。谢谢! – CodyBugstein 2014-10-16 22:54:41

0

您可以使用亚行启动一个shell和使用SQLite直接作用数据库http://developer.android.com/tools/help/sqlite3.html

。一旦你开始sqlite3的只是执行常规的SQL命令

+0

但我在实际设备上测试它,而不是在仿真器上测试 – CodyBugstein 2014-10-16 22:53:17

+0

您也可以在实际设备上进行测试。只要有权访问手机上的终端,您甚至应该可以直接从手机运行sql命令。 – Gregriggins36 2014-10-18 13:10:13

+0

哇 - 您如何在手机上获得终端访问权限? – CodyBugstein 2014-10-18 16:57:33

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 

    } 
} 
+0

在这种情况下,onUpgrade方法应该提供什么建议? – CodyBugstein 2014-10-16 22:55:25

+1

当你的数据库版本发生变化时,onUpgrade()被调用(你不会自己调用它),这意味着基础表结构发生了变化等。http://stackoverflow.com/questions/13159210/onupgrade-sqlite-database-in-android – Xiaoyu 2014-10-16 23:07:11

相关问题