Androidプログラミング質問スレ Part38
■ このスレッドは過去ログ倉庫に格納されています
0039デフォルトの名無しさん
2013/11/23(土) 20:17:39.34SQLiteOpenHelperをextendsしたclassを使って
SQLiteを利用しているのですが、以下動作に困っています。
■やっていること
・コンストラクタの中と、onCreate() 内でTABLEを作った後で
同じ関数 fixDB() を呼んでいる
・fixDB() の中でやっていることは、
- dbをgetWritableDatabaseで取得して
- Cursorの中にレコードAが存在しているかチェックして
- 存在していなければレコードAをdbに追加する
というものです。
■fixDB()の処理
SQLiteDatabase db = this.getWritableDatabase();
String selection = "Name=?";
String[] selectionArgs = { "recordA" };
Cursor cursor = db.query("name_table", new String[]{"Name"}, selection, selectionArgs, null, null, null);
if (!cursor.moveToFirst()) {
// レコードが0個なので、追加する(省略)
}
■実際の動作
・DBが無いときにアプリをデバッグ実行し、コンストラクタ⇒onCreate()の順番で
処理が進んでいることを確認しています
・fixDB() の各行にBreakPointを設置して1行ずつ進めているのですが、
・コンストラクタ⇒fixDB⇒1行目⇒2行目
⇒onCreate()⇒fixDB⇒1行目⇒ ・・・ ⇒fixDBの終わりまで進む
・結果、レコードAが2つ追加されている
これを回避する方法などわかりますでしょうか?よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています