我正在为Android开发一个应用程序,我正在寻找一种方法来创建数据库表并初始化它,但只在安装应用程序或第一次启动时才执行此操作。在第一次创建和初始化表之后,我不希望此代码再次出现,因为它会将大量数据插入到表中。 我可以这样做吗?
答案 0 :(得分:0)
扩展SQLiteOpenHelper
public class MyDB extends SQLiteOpenHelper {
Context c;
public MyDB(Context c) {
super(c, DB_NAME, null, DB_VERSION);
this.c=c;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table "+DB_TABLE+" ( _id integer primary key autoincrement, "+COL_1+" text, "+COL_2+" text, "+COL_3+" text, "+COL_4+" integer, "+COL_5+" integer, "+COL_6+" text );");
}
@Override
public void onUpgrade(SQLiteDatabase db, int from, int to) {
Log.i("onUpgrade", "From Version "+from+" to version "+to);
switch(from) {
case 0:
db.execSQL("DROP TABLE IF EXISTS wine;");
db.execSQL("create table "+DB_TABLE+" ( _id integer primary key autoincrement, "+COL_1+" text, "+COL_2+" text, "+COL_3+" text, "+COL_4+" integer, "+COL_5+" integer, "+COL_6+" text );");
case 1:
db.execSQL("ALTER TABLE "+DB_TABLE+" ADD COLUMN "+COL_6+" text;"); //comment was not in the original database
break;
}
}
答案 1 :(得分:0)
您需要创建一个扩展SQLLiteHelper的类并覆盖onCreate()方法以创建表并插入任何行。在此之后,除非您获得它的可写实例并传入您自己的查询,否则不会执行数据库查询。
如果您希望以后对您的应用进行更改,则需要覆盖onUpgrade()方法以对数据库进行更改。
答案 2 :(得分:0)
检查应用程序每次启动时数据库是否为空,如果是,请插入数据,否则忽略。