java - 未调用 Android SQLite onUpgrade

标签 java android sqlite oncreate

我在 onCreate 事件中创建了我的数据库,其中我有很多表,但我需要再添加 1 个表,而且我不能丢失任何数据,所以我需要使用事件onUpgrade,所以我希望你们能帮助我,因为我不知道如何使用它。

示例:

public void onCreate(SQLiteDatabase db) {
    sql = "CREATE TABLE IF NOT EXISTS funcionarios"
            +"(codigo INTEGER PRIMARY KEY, funcionario TEXT, apelido TEXT , functionTEXT, cartao TEXT , foto TEXT , tipo_foto TEXT);";  
    db.execSQL(sql);
}

我需要的是

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if(oldVersion < 2){
        db.execSQL("CREATE TABLE IF NOT EXISTS calibrar_aceleracao"+
                 "(limiteMaximo INTEGER, limiteMinimo INTEGER);");
    }
}

但它不起作用。

谢谢。

最佳答案

不需要需要更改您的应用程序版本来更新您的数据库 - 并不是说​​它不正确,但有一种更有效的方法可以做到这一点。那就是通过使用你的助手的 super 构造函数,它看起来像下面这样:

public class MyDatabaseHelper extends SQLiteOpenHelper {

    public MyDatabaseHelper(Context context) {
        super(context, "My.db", null, 1 /* This is the version of the database*/);
    }

    @Override
    public void onCreate(SQLiteDatabase database) {
        sql = "CREATE TABLE IF NOT EXISTS funcionarios (codigo INTEGER PRIMARY KEY, funcionario TEXT, apelido TEXT , functionTEXT, cartao TEXT , foto TEXT , tipo_foto TEXT);";  
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
        if(oldVersion < 2){
             db.execSQL("CREATE TABLE IF NOT EXISTS calibrar_aceleracao (limiteMaximo INTEGER, limiteMinimo INTEGER);");
        }
    }
}

关于java - 未调用 Android SQLite onUpgrade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757983/

相关文章:

java - 如何在我的 MainActivity(或应用程序)开始时隐藏 fragment ?

java - keyListener 有问题

java - Selenium:通过索引提取图像

android - 如何在 Android 中停止 gif 动画?

c++ - 最后一个参数覆盖 SQLite 绑定(bind)中的先前参数

mysql - 用mysql提取

java - App Engine 和接收邮件

android - WebView 支持 android wear

java - 获取启动器 Activity 类名称

mysql - 如何从数据库中按升序获取随机商店名称和价格?