SQLite DB的版本号

Unk*_*own 10 sqlite android

我正在我的Android应用程序中使用sqlite.

我正在做 db.getVersion()我的数据库的当前版本.

3在logcat中显示 .

甚至在构造函数中我设置4为版本号.

public Helper(Context context)
    {
        super(context, DATABASE_NAME, null,4);
    }
Run Code Online (Sandbox Code Playgroud)

我给4它应该采取4版本号.

但它不像这样.它显示3为版本号.

请任何建议.

更新: -

    public class Helper extends SQLiteOpenHelper {
        public static final String  DATABASE_NAME = "helper.db";

        public static final String TITLE = "title";
        public static final String AUTHOR = "author";
        public static final String ISBN = "isbn";

        public Helper(Context context)
        {
            super(context, DATABASE_NAME, null,4);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {

                db.execSQL( "CREATE TABLE book1(_id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT, author TEXT,isbn INTEGER);");
                Log.v("Create Table", "CREATE TABLE book1(_id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT, author TEXT,isbn INTEGER);");

Log.v("version ", "Version number is "+db.getVersion());

}
Run Code Online (Sandbox Code Playgroud)

Raa*_*nan 19

您正在检查onCreate函数中的版本号,为什么?只应在第一次从头创建数据库时调用OnCreate函数,在这种情况下,它应该构建数据库,因为您需要适合您正在使用的版本.

您是否可以在创建数据库之后尝试检查数据库版本,并且要求获取可读或可写的实例?

SQLiteDatabase db = new Helper(context).getWritableDatabase();
db.getVersion(); // what value do you get here?
Run Code Online (Sandbox Code Playgroud)

查看android 4.1.1 SQLiteOpenHelper的源代码,这里似乎db版本应该在onCreate函数中为0,我想它可能是以你正在测试的版本的另一种方式实现的. http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android/database/sqlite/SQLiteOpenHelper.java#242


Mr.*_*.Me 6

似乎数据库已经由您的代码的先前版本创建,尝试从您正在测试的设备上卸载应用程序,然后重新安装.这应该给你版本= 4