データベースのバージョンを変更し、データベースのアップグレードをしようとしたところ以下のようなエラーメッソージが返ってきました。
「android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5): , while compiling: PRAGMA journal_mode」
色々調べて、データベースをcloseしてみてもうまくいきません。(closeの仕方が間違っているのかもしれませんが...)
下記にコードを記載します。
現在setDataToDBメソッドの中でエラーが出ています。
すみませんが、宜しくお願いします。
public class MyDBHelper extends SQLiteOpenHelper {
public MyDBHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.beginTransaction();
try {
db.execSQL("CREATE TABLE IF NOT EXISTS " + TB_MAN + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, VOICE TEXT)");
db.execSQL("CREATE TABLE IF NOT EXISTS " + TB_WOMAN + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, VOICE TEXT)");
db.execSQL("CREATE TABLE IF NOT EXISTS " + TB_WOMAN_MAX + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, VOICE TEXT)");
db.execSQL("CREATE TABLE IF NOT EXISTS " + TB_WOMAN_MAX + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, VOICE TEXT)");
}finally {
db.endTransaction();
}
setDataToDB("aaa", "bbb", Uri.parse("content://taro.thanks.MyContentProvider/" + TB_MAN));
setDataToDB("AAA", "BBB", Uri.parse("content://taro.thanks.MyContentProvider/" + TB_MAN_MAX));
setDataToDB("ccc", "ddd", Uri.parse("content://taro.thanks.MyContentProvider/" + TB_WOMAN));
setDataToDB("CCC", "DDD", Uri.parse("content://taro.thanks.MyContentProvider/" + TB_WOMAN_MAX));
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.beginTransaction();
try {
db.execSQL("DROP TABLE IF EXISTS " + TB_MAN);
db.execSQL("DROP TABLE IF EXISTS " + TB_WOMAN);
db.execSQL("DROP TABLE IF EXISTS " + TB_MAN_MAX);
db.execSQL("DROP TABLE IF EXISTS " + TB_WOMAN_MAX);
}finally {
db.endTransaction();
}
onCreate(db);
}
public void setDataToDB(String defaultData1, String defaultData2, Uri uri) {
ContentValues values = new ContentValues();
values.put(COLUMN_VOICE, defaultData1);
values.put(COLUMN_VOICE, defaultData2);
getContext().getContentResolver().insert(uri, values);
}
}