- 39 名前:デフォルトの名無しさん [2013/11/23(土) 20:17:39.34 ]
- では解決されたようなので次の話題を・・・
SQLiteOpenHelperを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つ追加されている これを回避する方法などわかりますでしょうか?よろしくお願いします。
|

|