我在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);
}
答案 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();