[解決済み] Android SQLite データベースにテーブルが存在するかどうかを確認するには?
質問
私は、データベースにすでにレコードがあるかどうかをチェックし、ない場合はいくつかのことを処理し、最終的にそれを挿入し、データが存在する場合は単にデータベースからデータを読み取る必要があるアンドロイドアプリを持っています。私はSQLiteOpenHelperのサブクラスを使用して、SQLiteDatabaseの書き換え可能なインスタンスを作成および取得し、テーブルがまだ存在しない場合は自動的に作成されると思っていました(それを行うコードはonCreate(...)メソッドにあるので)。
しかし、テーブルがまだ存在せず、私が持っている SQLiteDatabase オブジェクトで実行された最初のメソッドが query(...) への呼び出しである場合、私の logcat は "I/Database(26434): sqlite returned: error code = 1, msg = no such table: appdata" のエラーを示し、確かに、Appdata テーブルは作成されていません。
原因について何か考えがありますか?
私は、テーブルが存在するかどうかをテストする方法(存在しない場合、データは確かにその中になく、私はそれに書き込むまでそれを読む必要がないため、テーブルを適切に作成するようです)、またはそれが作成されることを確認する方法、そしてquery(...)への最初の呼び出しに間に合うように、ちょうど空であることを確認する方法を探しています。
EDIT
下の2つの回答の後に投稿されたものです。
私は問題を見つけたかもしれないと思います。私は何らかの理由で、両方とも同じデータベースファイルにアクセスするにもかかわらず、各テーブルに対して異なるSQLiteOpenHelperが作成されることになっていると判断しました。1 つの OpenHelper しか使用しないようにコードをリファクタリングし、その onCreate 内で両方のテーブルを作成すると、よりうまくいくかもしれません...。
どのように解決するのですか?
onCreateメソッドが実行されない原因となっていた問題は、次の事実でした。
SQLiteOpenHelper
オブジェクトがデータベースを参照し、各テーブルに別々のオブジェクトを持たないことです。両方のテーブルを 1 つの
SQLiteOpenHelper
が問題を解決してくれました。
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] SQLiteでテーブルが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] AndroidでSQLiteを使用する際に、並行処理の問題を回避するにはどうすればよいですか?
-
[解決済み] Androidの連絡先リストを呼び出すには?
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] アンドロイドのdatepickerダイアログで最大の日付を設定するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AndroidにおけるViewPager2の適切な実装
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] onCreate(Bundle savedInstanceState)とは?
-
[解決済み] グリッドビューの高さが削減される
-
[解決済み] Android APKファイルの中身を見るには?
-
[解決済み] ViewPager2でスワイプを無効にするには?
-
[解決済み] HttpURLConnectionを使ったPOSTによるファイル送信