我有一个数据库,我在资产目录的SQLite中创建。当我在Android模拟器中安装应用程序时,如果该表不存在,则会创建一个特定的表,但是当它执行此操作时,它会删除其余的表。我想要做的是,当它创建一个表时,其他表应该保留在数据库中而不是删除。我不知道出了什么问题,或者我放弃了整个数据库。
这是我的SQLiteHelper:
public class YAOMySQLiteHelper extends SQLiteOpenHelper {
...
private static final String DATABASE_NAME = "YAOMasterDB.db";
private static final int DATABASE_VERSION = 1;
public YAOMySQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
private static final String DATABASE_CREATE_2 =
"Create Table " + TABLE_DECK_LIST+ " AS SELECT SUBSTR(Name,11) AS DECK_LIST FROM sqlite_master WHERE type='table' AND Name like 'Deck Name %'";
// " SELECT SUBSTR(Name,11) AS DECK_LIST FROM sqlite_master WHERE type='table' AND Name like 'Deck Name %'; ";
public static final String DROP_DECK_LIST_TABLE =
"DROP TABLE IF EXISTS " + TABLE_DECK_LIST;
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(DROP_DECK_LIST_TABLE);
database.execSQL(DATABASE_CREATE_2);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(YAOMySQLiteHelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_DECK_LIST);
onCreate(db);
}
}
答案 0 :(得分:1)
SQLiteOpenHelper class旨在允许您的应用使用onCreate
onUpdate
方法中的SQL语句创建数据库。
此数据库文件在应用程序的数据目录中创建。 什么都没有删除;你应用程序永远不会访问assets文件夹中的数据库文件。
要使用assets文件夹中的数据库,您必须从那里复制它。 最简单的方法是使用SQLiteAssetHelper等类。