データベースにすでにレコードがあるかどうかを確認する必要があるAndroidアプリがあります。ない場合は、いくつかの処理を行って最終的に挿入し、データが存在する場合はデータベースからデータを読み取るだけです。SQLiteOpenHelperのサブクラスを使用して、SQLiteDatabaseの書き換え可能なインスタンスを作成および取得しています。これは、テーブルがまだ存在しない場合は自動的に処理されると考えていました(これを行うコードはonCreate(... ) 方法)。
ただし、テーブルがまだ存在せず、SQLiteDatabaseオブジェクトで実行された最初のメソッドがquery(...)の呼び出しである場合、logcatに「I / Database(26434):sqlitereturned:error」というエラーが表示されます。 code = 1、msg =そのようなテーブルはありません:appdata "、そして確かに、appdataテーブルは作成されていません。
理由について何かアイデアはありますか?
テーブルが存在するかどうかをテストする方法を探しています(存在しない場合、データは確かにテーブルにないため、テーブルを作成しているように見える、テーブルに書き込むまで読み取る必要はありません)適切に)、または最初のquery(...)の呼び出しに間に合うように、作成されて空であることを確認する方法
編集
これは以下の2つの答えの後に投稿されました:
私は問題を見つけたかもしれないと思います。どちらも同じデータベースファイルにアクセスしているにもかかわらず、何らかの理由で、テーブルごとに異なるSQLiteOpenHelperを作成することにしました。そのコードをリファクタリングして1つのOpenHelperのみを使用し、onCreate内に両方のテーブルを作成するとうまくいくと思います...