複数のテーブルを作成するアプリを開発しましたが、それらのテーブルを確認したいです。adb shell sqlite3 コマンドを使用する方法があることは知っていますが、それはデバイスでは機能しません...エミュレーターでは正常に機能します。テスト用のエミュレーターよりも高速であるため、デバイスを使用しています。私の質問は、Eclipse プラグインまたは sqlite データベース マネージャーを使用してデバイスで作成されたデータベース テーブルを確認する方法はありますか?
5 に答える
ルート権限を取得している場合は、データベースファイルをdata / data/comから引き出すことができます。yourapp.title / databases次に、次のようなsqliteデータベースマネージャーで表示します 。SQLiteデータベースブラウザー
ルート権限を取得していない場合、データベースの内部を表示することはできませんが、データベーステーブルなどの内容を表示するリストビューにカーソルアダプターをリンクさせることができます。
- アプリケーションをデバッグモードでビルドします。
- シェルに、と書き込み
run-as your.package.name
ます。これにより、アプリのUIDに切り替えられます(アプリケーションデータフォルダーにアクセスできるようになります)。 cat /data/data/your.package.name/databases/database_name > /sdcard/database_name
。これにより、データベースファイルがSDカードにコピーされます。
これで、SDカードでデータベースを自由に閲覧できます。
データベースをルート化またはコピーせずにデータベースをデバッグする簡単な方法を見つけました。シンプルで無料の SQlite マネージャーをデバイスにインストールし、静的な最終文字列を SQLLiteOpenHelper クラスに追加しました。
private static final String DATABASE_NAME = "myDatabaseName.db";
private static final String DATABASE_NAME_DEBUG_PATH = "/mnt/sdcard/";
次に、プライベート コンストラクターを次のように設定します。
//Defaut constructor.
private DatabaseHelper(Context context) {
//Allow database access without rooting the device.
super(context, (BuildConfig.BUILD_TYPE == "debug") ? DATABASE_NAME_DEBUG_PATH + DATABASE_NAME : DATABASE_NAME, null, DB_VERSION);
}
このようにして、SQlite マネージャーはデバッグ中にデータベースを見つけます。これは、データベースが sd に配置され、問題やルート化なしでデータベースを表示できるためです。
さまざまなプラットフォーム (Windows、Mac OS X など) の sqlite アプリケーションがあります。
adb pull
db ファイルをコンピュータに転送し、お気に入りの sqlite アプリケーションを使用して db ファイルを確認することをお勧めします。
多くのデバイスは、大きな内部メモリを備えている代わりに外部メモリをサポートしていませんが、これらのデバイスには内部データまたはモバイル データへのアクセスに関連するプライバシー ポリシーが異なるため、外部メモリ コードを使用してデータを書き込む際に問題は発生しません。外部メモリをサポートしていないデバイスでファイルを表示するには、ファイル エクスプローラー アプリを使用する必要がある場合があります。ファイル エクスプローラー アプリを使用すると、アプリ用に作成したアプリケーション ディレクトリまたはファイルを表示できます。