我有一个应用程序与数据库中的Table1(“DATABASE”)。它工作正常。如何在Android中已经有多个表格的情况下向数据库添加另一个表格?
当我尝试将另一个名为“Table2”的表放入数据库并在应用程序中使用此新表中的项目时,警报消息将如下所示。
08-28 00:05:58.101:E/AndroidRuntime(6317): android.database.sqlite.SQLiteException:没有这样的表:表2(代码 1):由引起的,在编译时:选择_id,MissionNumber,NAME1 NUM1,NAME2 NUM2从表2 08-28 00:05:58.101:E/AndroidRuntime(6317):在 android.database.sqlite.SQLiteConnection.nativePrepareStatement(母语 方法)
但是,如果我删除以前的程序,并把表2,然后它的作品。我的做法是将代码放入DatabaseHelper的“onCreate”部分。
但是我想,下载我的程序的人不会自动致力于清除以前的程序。所以我想要的是,当人们下载新的table2的应用程序时,它会正常工作。
我插入新表的方式是,
private class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
try {
String DROP_SQL = "DROP TABLE IF EXISTS " + "Table1";
db.execSQL(DROP_SQL);
} catch(Exception ex) {
}
String CREATE_SQL1 = "create table " + "Table1" + "("
+ " _id integer PRIMARY KEY autoincrement, "
+ " MissionNumber text, "
+ " NAME1 text, "
+ " NUM1 int, "
+ " NAME2 text,"
+ " NUM2 int)";
try {
db.execSQL(CREATE_SQL1);
} catch(Exception ex) {
}
TABLE_NAME = "Table1";
try {
db.execSQL("insert into " + TABLE_NAME + "(MissionNumber, NAME1, NUM1, NAME2, NUM2) values ('GROUP1', 'lucky_teleport', 0, 'pass', '0');");
db.execSQL("insert into " + TABLE_NAME + "(MissionNumber, NAME1, NUM1, NAME2, NUM2) values ('GROUP2', 'no', 0, 'notyet', '0');");
} catch(Exception ex) {
}
和
try {
String DROP_SQL = "DROP TABLE IF EXISTS " + "Table2";
db.execSQL(DROP_SQL);
} catch(Exception ex) {
}
String CREATE_SQL2 = "create table " + "Table2" + "("
+ " _id integer PRIMARY KEY autoincrement, "
+ " MissionNumber text, "
+ " NAME1 text, "
+ " NUM1 int, "
+ " NAME2 text,"
+ " NUM2 int)";
try {
db.execSQL(CREATE_SQL2);
} catch(Exception ex) {
}
TABLE_NAME = "Table2";
try {
db.execSQL("insert into " + TABLE_NAME + "(MissionNumber, NAME1, NUM1, NAME2, NUM2) values ('GROUP1', 'lucky_teleport', 0, 'pass', '0');");
db.execSQL("insert into " + TABLE_NAME + "(MissionNumber, NAME1, NUM1, NAME2, NUM2) values ('GROUP2', 'no', 0, 'notyet', '0');");
} catch(Exception ex) {
}
这不是容易的,我完全理解数据库是什么。请分享好的想法,不要抹去以前的程序,将新表添加到数据库中!
看看这会帮助你:http://androidforbeginners.blogspot.com/2010/01/creating-multiple-sqlite-database。html – user3487063 2014-08-27 15:26:55