2014-10-16 80 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

相關問題