有人可以在SQLite database
的{{1}}帮助吗?
首先,我使用了来自here的教程。它在我的应用程序中运行良好,但是当我添加新列并将android
版本更改为“2”时,应用程序停止并且在文件资源管理器中,找不到database
。任何人都可以说明问题是什么解决方案。
编辑: 这是我的一些变化.. 这是我的FirstClass.java
database
这是我的TodoDatabaseHelper.java
// Database creation SQL statement
private static final String DATABASE_CREATE = "create table "
+ TABLE_TODO
+ "("
+ COLUMN_ID + " integer primary key autoincrement, "
+ COLUMN_CATEGORY + " text not null, "
+ COLUMN_SUMMARY + " text not null,"
+ COLUMN_DESCRIPTION
+ " text not null"
+ COLUMN_DATE + "date not null " //i have added the date column
+ ");";
public static void onCreate(SQLiteDatabase database) {
database.execSQL(DATABASE_CREATE);
}
public static void onUpgrade(SQLiteDatabase database, int oldVersion,
int newVersion) {
Log.w(FirstClass.class.getName(), "Upgrading database from version "
+ oldVersion + " to " + newVersion
+ ", which will destroy all old data");
database.execSQL("DROP TABLE IF EXISTS " + TABLE_TODO);
// database.execSQL("INSERT INTO "+TABLE_TODO+" VALUES (null, datetime()) ");
onCreate(database);
}
答案 0 :(得分:1)
我不确定我是否正确,但是,如果你在你的oUnUpgrade方法中删除你的数据库,哪个dab应该进行系统升级?我的意思是,如果您为您的数据库设置了一个新版本,它应该与之前的数据库相同,但只会更改而不会被删除。
我有类似的情况,我保存了一些用户输入值,但每次崩溃都来自我的应用程序。所以我将版本设置为相同的整数(例如旧版本的db和新版本的db版本1,旧的版本1版本,旧版本的版本2版本),删除旧的db并创建一个包含所有新数据的全新版本。这非常好....
上面的陈述是为了更新,而不是升级,抱歉。但是现在,我已经查看了你的代码,是否有可能因为错误而没有创建数据库?我想你忘了在COLUMN_DESCRIPTION之后设置一个点。这是我的编辑:
private static final String DATABASE_CREATE = "create table "
+ TABLE_TODO
+ "("
+ COLUMN_ID + " integer primary key autoincrement,"
+ COLUMN_CATEGORY + " text not null,"
+ COLUMN_SUMMARY + " text not null,"
+ COLUMN_DESCRIPTION
+ " text not null," //HERE YOU FORGOT COMMA
+ COLUMN_DATE + " date not null" //i have added the date column
+ ");";
答案 1 :(得分:0)
根据我的方法
@覆盖 public void onUpgrade(SQLiteDatabase数据库,int oldVersion, int newVersion){ FirstClass.onUpgrade(database,oldVersion,newVersion); }
正在吸收这个问题。因为您只是升级版本而不是再次创建数据库。升级数据库后,您需要像对表格一样调用onCreate。
答案 2 :(得分:0)
使用 onUpgrade(),您只需删除表结构而不是整个数据库。
解决方案:
(1)更新数据库时以编程方式删除应用程序。
(2)您必须在移动设备中卸载应用程序并重新安装。