我有一個應用程序與數據庫中的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