Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android studio中升级数据库不起作用_Android_Sqlite_Android Sqlite - Fatal编程技术网

在android studio中升级数据库不起作用

在android studio中升级数据库不起作用,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在尝试将sqlite版本号从1升级到2,但是没有调用onupgrade方法 我是否必须删除设备中的应用程序,然后安装应用程序来测试它 唯一被调用的方法是DatabaseHelper和onCreate 没有调用其他方法 在DatabaseHelper.java文件中 private static final int DBVersion = 1; // I had change this value to 2.but it is not working. public Datab

我正在尝试将sqlite版本号从1升级到2,但是没有调用onupgrade方法

我是否必须删除设备中的应用程序,然后安装应用程序来测试它

唯一被调用的方法是
DatabaseHelper
onCreate
没有调用其他方法

在DatabaseHelper.java文件中

    private static final int DBVersion = 1; // I had change this value to 2.but it is not working.
    public DatabaseHelper(Context context, CursorFactory cf) {
        super(context, DBName, cf, DBVersion);
    }

 @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(TABLE_CREATE_Table);
}
@Override
    public void onOpen(SQLiteDatabase db) {
        super.onOpen(db);
} 
@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) {
//This is not called.If it called i will add the changed here
}
dataprovider.java的另一个类

@Override
    public boolean onCreate() {
        dbHelper = new DatabaseHelper(getContext(), null);
        return true;
    }
使用:-

@Override
public boolean onCreate() {
    dbHelper = new DatabaseHelper(getContext(), null);
    SqliteDatabase db = dbHelper.getWritableDatabase(); //<<<<<<<<<<< 
    return true;
}
  • 我倾向于将返回的SQLiteDatabase保存到类变量中,然后使用该变量,而不是在底层方法中使用
    this.getWritableDatabase()

您如何知道未调用onUpgrade的可能副本?是否添加了断点并进行了调试?你在支票上加了代码吗?您是否尝试过任何操作,例如插入一行?只有当您尝试执行某项操作时,才会调用onUpgrade。它不会通过简单地实例化数据库助手来调用。@MikeT已经在那里添加了断点来检查是否调用了它。是,正在调用插入/更新方法。但是我是否必须检查getWritableDatabase()中的条件,即如果版本更新,则显式调用onupgrade?@MikeT谢谢你,迈克。我得到了答案。在我尝试插入数据后调用Onupgrade。你是对的。谢谢你的帮助
public DatabaseHelper(Context context, CursorFactory cf) {
    super(context, DBName, cf, DBVersion);
    this.getWritableDatabase();
}