Java 如何在sqlite中更新表?
我有两张表格,第一张是“表格主题”,第二张是“表格章节”。现在我想Java 如何在sqlite中更新表?,java,android,sqlite,Java,Android,Sqlite,我有两张表格,第一张是“表格主题”,第二张是“表格章节”。现在我想 添加一些列并删除上一列。我的问题是如何做到这一点。我尝试更新,但 它显示以前的而不是新的。我需要删除以前的表并用新列更新表。 我更改了版本号,但它不工作。请给我提示或参考 以下是我对SQLite的一些代码: @Override public void onCreate(SQLiteDatabase database) { database.execSQL(DATABASE_CREATE); database.e
添加一些列并删除上一列。我的问题是如何做到这一点。我尝试更新,但
它显示以前的而不是新的。我需要删除以前的表并用新列更新表。
我更改了版本号,但它不工作。请给我提示或参考 以下是我对SQLite的一些代码:
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(DATABASE_CREATE);
database.execSQL(DATABASE_CREATE1);
}
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.w(MySQLiteHelper.class.getName(), "Upgrading database from version "
+ oldVersion + " to " + newVersion
+ ", which will destroy all old data");
database.execSQL("DROP TABLE IF EXISTS " + TABLE_SUBJECT);
database.execSQL("DROP TABLE IF EXISTS" + TABLE_CHAPTER);
onCreate(database);
}
无法删除SQLite中的列。中描述了一种变通方法 要添加一个新列,只需增加数据库版本并将创建字符串更改为所需的数据库布局(删除要删除的列并添加另一列)。下次打开数据库时,将调用onUpgrade,这将删除现有表。然后创建更改的表。这不是一个好方法,因为您丢失了数据库中的所有数据 要在不丢失所有数据使用的情况下添加一个新列,您必须将onUpgrade方法更改为如下内容(这预计您当前的数据库版本为1,如果不是简单地在案例中更改数字的话),然后增加数据库版本:
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
database.execSQL("ALTER TABLE " +
TABLE_SUBJECT + " ADD COLUMN " + KEY_NEWCOLUMN + " text not null");
database.execSQL("ALTER TABLE " +
TABLE_CHAPTER + " ADD COLUMN " + KEY_NEWCOLUMN + " text not null");
}
}
此方法是可伸缩的,因为当有新的更改时,您只需添加案例2、案例3。。。不要在案例末尾添加break。这样,如果应用程序更新将版本增加到3,并且更新后的应用程序仍处于1状态(可能错过了更新),则所有更改都将应用
您可以找到ALTERTABLE的文档。sqlite站点(sqlite.org)通常对查找此类内容有很大帮助。您可以尝试以下代码
public long update_todo_not(String a, String b, String c, String d,
String e, String f, String g, String id) {
ContentValues con = new ContentValues();
con.put("title", a);
con.put("description", b);
con.put("due_date", c);
con.put("alarm_time", d);
con.put("category", e);
con.put("alarm_set",f);
con.put("priority", g);
Log.v("priority", g+"");
return mDb.update(DATABASE_TABLE_TODO_LIST, con, "id ='" + id + "'",null);
}
我刚刚读了你们的答案,我只是想知道应用程序是如何知道数据库的哪个版本的?原来的问题只有
database.execSQL(database\u CREATE)代码>没有说明数据库是什么版本,我现在面临同样的问题