我正在我的
Android应用程序中的sqlite工作.
我正在做db.getVersion()来获取我的数据库的当前版本.
它在logcat中显示3.
即使在构造函数中,我设置4作为版本号.
public Helper(Context context) { super(context,DATABASE_NAME,null,4); }
我给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,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,isbn INTEGER);"); Log.v("version ","Version number is "+db.getVersion()); }
解决方法
您正在检查onCreate功能中的版本号,为什么? OnCreate函数只能在第一次从头开始创建数据库时被调用,在这种情况下,应该根据您使用的版本来构建数据库.
在创建数据库后,您可以尝试检查数据库版本,并要求获取可读或可写的实例吗?
sqliteDatabase db = new Helper(context).getWritableDatabase(); db.getVersion(); // what value do you get here?
查看android 4.1.1的sql代码源代码,sqliteOpenHelper,在这里似乎db版本应该是0的onCreate函数,我想这可能是以另一种方式在您正在测试的版本上实现的.
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.1_r1/android/database/sqlite/SQLiteOpenHelper.java#242