在onCreate时为Sqlite提供初始值

时间:2018-05-09 07:47:08

标签: android sqlite

我在onCreate时为Sqlite提供初始值。 但Android Monitor会在下面显示错误消息。

错误代码:5(SQLITE_BUSY) 引发者:数据库文件被锁定。 (数据库被锁定(代码5):,编译时:PRAGMA journal_mode)

我的代码有问题吗?

private SQLiteDatabase DefaultWritableDatabase = null;
private static final String DATABASE_NAME = "arrived.db";
private static final int DATABASE_VERSION = 3;

@Override
public SQLiteDatabase getWritableDatabase() {
    final SQLiteDatabase db;
    if (DefaultWritableDatabase != null) {
        db = DefaultWritableDatabase;
    } else {
        db = super.getWritableDatabase();
    }
    return db;
}

@Override
public void onCreate(SQLiteDatabase db) {
    this.DefaultWritableDatabase = db;
    // Create table
    String Create_Query = "CREATE TABLE IF NOT EXISTS  arrivedservice ("
            + "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
            + "Lat TEXT ,"
            + "Lon TEXT , "
            + "LeaveTime INTEGER "
            + ");";
    db.execSQL(Create_Query);

    //Give initial value to the Sqlite when onCreate
    String LeaveTime = String.valueOf(System.currentTimeMillis());
    String Insert_Query = "INSERT INTO arrivedservice (_id,Lat,Lon,LeaveTime) VALUES ('1','240.22652','151.523978'," + LeaveTime + ")";
    db.execSQL(Insert_Query);
}

2 个答案:

答案 0 :(得分:1)

您不应该将close()上的SQLiteDatabase作为参数传递给onCreate()。你没有打开它,也没有拥有它。

答案 1 :(得分:-1)

在执行插入查询之前尝试此行

db.getWritableDatabase();// add this line
String LeaveTime = String.valueOf(System.currentTimeMillis());
String Insert_Query = "INSERT INTO arrivedservice (_id,Lat,Lon,LeaveTime) VALUES ('1','240.22652','151.523978'," + LeaveTime + ")";
db.execSQL(Insert_Query);
db.close();