簡體   English   中英

如何使用onUpgrade()方法使用SQLiteAssetHelper升級數據庫?

[英]how to upgrade my database using SQLiteAssetHelper using onUpgrade() method?

我正在使用SQLiteAssetHelper類構建包含預載數據庫問題的測驗應用程序。 我的應用程序可以正常運行,數據庫中已有300個測驗。 但我不知道如何升級數據庫(向表中添加新測驗問題,並且不更改結構或刪除舊表中任何已保存的用戶數據)。 我已經按照GitHub中SQLiteAssetHelper文檔中的說明安裝了SQLite比較,但是它為我生成了一個空的SQL文件,我不知道為什么! 因此,我嘗試了以下代碼,並嘗試僅插入兩行用於測試數據庫是否可以在我的android上從版本1升級到版本2,但不幸的是,這樣做沒有幫助。 我已經以這種形式到處查看過,但是與SQLiteAsseHelper類相關的信息很少,並且不夠清楚。 這些天我正在完成測驗應用程序,我在想如果我無法更新該應用程序,那將毫無用處。請告知我如何在不更改先前存在的行的情況下將新行插入舊數據庫,因為我保存了用戶在表中的答案。

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;

public class DatabaseOpenHelper extends SQLiteAssetHelper {

    private static final String DATABASE_NAME = "quizMe_1.db";
    private static final int DATABASE_VERSION = 2;

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


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion < 2){
        insertValues(db,"من اكثر فريق عالمي فوزا بكأس العالم ؟","فرنسا","ألمانيا","أيطاليا","البرازيل","0","4","0");
        insertValues(db,"نبي سميت سورة من القران بأسمه ؟","عيسى","موسى","إبراهيم","نوح","0","3","0");
    }
}

private static void insertValues(SQLiteDatabase db, String question,String ans1, String ans2, String ans3, String ans4,
                                 String right, String userAsn, String field) {
    ContentValues questionValues = new ContentValues();
    questionValues.put("question", question);
    questionValues.put("answer_1", ans1);
    questionValues.put("answer_2", ans2);
    questionValues.put("answer_3", ans3);
    questionValues.put("answer_4", ans4);
    questionValues.put("right_answer", right);
    questionValues.put("user_answer", userAsn);
    questionValues.put("field", field);
    db.insert("quiz", null, questionValues);
}


}

我不確定是否可以更新資產文件夾中的數據庫文件,但是我希望可以給您一個調試解決方案的想法。 在嘗試以下解決方案之前,我們需要確保是否可以更新數據庫文件中的值。 為此,通過代碼更新表中的值並對其進行測試。 例如:在測驗應用程序中更改問題1的答案,並通過運行應用程序檢查值是否已更新。 如果值已更新,那么我們也可以插入新值,然后嘗試以下值,否則我們將無法更新數據庫文件中的值。

希望您知道只有在我們將app.ie從較低版本更新到最新版本時,才會調用onUpgrade方法。 我不確定您是如何測試代碼的,如果以下面的方式進行了測試,請忽略它,否則嘗試一下。 首先從Play商店下載並安裝該應用,然后生成已簽名的APK以獲取最新版本(確保數據庫版本已更新),然后以onupgrade方法舉杯祝酒,並檢查其是否符合條件。 如果出現吐司,請檢查您的插入代碼,否則按以下方式更改條件並嘗試

if(newVersion == 2)

希望對您有所幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM