如何创建数据库表并在应用程序启动时填充一些数据?我有一个带有create table和insert语句的init_sql.sql
文件,但只执行CREATE TABLE
所以我有我的表但它是空的。
init_sql.sql
CREATE TABLE IF NOT EXISTS Event (
id INTEGER PRIMARY KEY NOT NULL,
time TEXT NOT NULL,
name TEXT NOT NULL,
description TEXT NOT NULL,
additional_info TEXT,
stage CHAR(50)
);
INSERT INTO Event (name, time, description, stage)
VALUES ('13:30 - 14:30', 'koncert Blue tone Band',
'Mladá, energická jazzfunková kapela Blue tone Band Vás pobaví a rozhýbe zaručeně každého absolventa!', 'mainStage');
我通过发出sqlite3 myDb.db < init_sql.sql
验证了此文件是否正确,这会创建表并插入数据。
我的SQLHelper看起来像这样
public class SQLiteHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "alumni.db";
private Context context;
public SQLiteHelper(Context context) {
super(context, DB_NAME, null, 6);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
InputStream stream = context.getResources().openRawResource(R.raw.init_sql);
try {
String sqlString = convertStreamToString(stream);
db.execSQL(sqlString);
} catch (IOException ex) {
//TODO
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS Event;");
onCreate(db);
}
我在我的DAO课程中使用它,如new SQLiteHelper(context).getWritableDatabase();
所以任何想法我可能做错了什么?
答案 0 :(得分:2)