0

SQLite データベースと、そのデータベース内にいくつかのテーブルがあります。データベース内のテーブルごとに DBAdapter を開発しています。(Reto Meier の Professional Android 2 Application Development、リスト 7.1 を参照してください)。

コマンド ラインからデータベースとやり取りするために adb シェルを使用しており、期待どおりにデータベースが作成されていることを確認しています。ときどき、テーブルを削除して、最初から適切に構築されていることを確認したいことがあります。

問題は、SQLiteOpenHelper がデータベースが存在するかどうかのみをチェックすることです。テーブルが存在することも確認するヘルパーを作成するための典型的な解決策はありますか? 基本的に、テーブルを削除すると、ヘルパーはデータベースが存在することを確認し、すべてが正常であると想定します。

また、上記のリファレンスで使用されている CREATE_DATABASE 文字列は、1 つのテーブルのみを作成します。すべてのテーブルへのアダプタに DBAdapter を使用することを検討する必要がありますか? それは私にはきれいに思えません。

参考資料

4

2 に答える 2

1

テーブルが存在することも確認するヘルパーを作成するための典型的な解決策はありますか?

SELECT COUNT(*) FROM sqlite_master WHERE type='table' AND name='...' ORDER BY name;

( をテーブルの名前に置き換えます...)

が返された場合1、テーブルは存在します。が返された場合0、テーブルは存在しません。

ただし、ヘルパーはそれを手伝ってくれません。テスト目的では、データベース全体を削除することをお勧めします。本番環境では、個々のテーブルをその場で作成することもないためです。

于 2010-06-09T10:56:07.187 に答える
0

ときどき、テーブルを削除して、最初から適切に構築されていることを確認したいことがあります。

すべてのテーブルを削除して再作成する計測テストがあります。もう少し作業が必要ですが、一度やるともっと役に立ちます。

テーブルが存在することも確認するヘルパーを作成するための典型的な解決策はありますか?

CommonsWare が提案したことに加えて、シェル コマンドを使用してこの情報を取得するオプションもあります。

adb -e shell sqlite3 -batch ${DB_FILE} .table
adb -e shell sqlite3 -batch ${DB_FILE} .schema
于 2011-05-28T08:10:11.353 に答える