SQLiteデータベースを表示する必要がありますが、その方法がわかりません。私はに行ってきたhttp://www.sqlite.org/download.html、私のOS用のコマンドラインシェルをダウンロードしたが、私はプログラムを実行し、入力したときadb ...
、私はエラーを取得します。
注:私はAndroid Studioを使用しているので、Android Studioには必要なすべてのSDKツールが含まれていると言っていたので、余分なものをインストールする必要はないと思います。
SQLiteデータベースを表示する必要がありますが、その方法がわかりません。私はに行ってきたhttp://www.sqlite.org/download.html、私のOS用のコマンドラインシェルをダウンロードしたが、私はプログラムを実行し、入力したときadb ...
、私はエラーを取得します。
注:私はAndroid Studioを使用しているので、Android Studioには必要なすべてのSDKツールが含まれていると言っていたので、余分なものをインストールする必要はないと思います。
回答:
Android Studioでそれを行う方法は見つかりませんでしたが、毎回ファイルをプルする代わりに、リモートシェルを使用してデータベースにアクセスします。
ここですべての情報を見つけてください:http: //developer.android.com/tools/help/sqlite3.html
1-コマンドプロンプトでplatform-toolsフォルダーに移動します
2-コマンドadb devices
を入力してデバイスのリストを取得します
C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx device
3-シェルをデバイスに接続します。
C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell
4a-ルート化されたデバイスでこのステップをバイパスできます
run-as <your-package-name>
4b-dbファイルを含むフォルダーに移動します。
cd data/data/<your-package-name>/databases/
5-sqlite3を実行してデータベースに接続します。
sqlite3 <your-db-name>.db
6-好きなsqlite3コマンドを実行します。例:
Select * from table1 where ...;
注:以下で実行するその他のコマンドを見つけてください。
SQLiteデータベースのテーブルを表示するには、いくつかの手順があります。
データベース内のテーブルを一覧表示します。
.tables
テーブルがどのように見えるかをリストします。
.schema tablename
表全体を印刷します。
SELECT * FROM tablename;
使用可能なすべてのSQLiteプロンプトコマンドを一覧表示します。
.help
/data/data
ディレクトリに
cp /data/data/<your-package-name>/databases/<your-db-name>.db /sdcard
。次に、エクスプローラーなどのファイルマネージャーを使用して、ファイルをメールに送信します。:)
私にとって最も簡単な方法は、Androidデバイスモニターを使用してデータベースファイルを取得し、SQLiteデータベースブラウザーを使用してファイルを表示し、AndroidStudioを使用してAndroidをプログラムすることです。
1)AndroidStudioからAndroidエミュレーターを使用してデータベースアプリを実行して起動します。(確認のためにデータベースアプリにデータを挿入しました)
2)Androidデバイスモニターを実行します。実行方法?; に移動し[your_folder] > sdk >tools
ます。そのフォルダーにmonitor.batがあります。shift + right click
フォルダ内で「Open command window here
」を選択します。このアクションにより、コマンドプロンプトが起動します。タイプmonitor
とAndroidデバイスモニターが起動します。
3)現在実行しているエミュレーターを選択します。次に、data>data>[your_app_name]>databases
4)アイコン(右上隅にあります)をクリックし(アイコンにカーソルを合わせると、「デバイスからファイルをプル」と表示されます)、好きな場所に保存します
5)SQLiteデータベースブラウザを起動します。保存したファイルをそのブラウザにドラッグアンドドロップします。
6)Browse Data
タブに移動し、表示するテーブルを選択します。
あなたが抱えている問題は一般的であり、ドキュメントでは十分に説明されていません。通常のデバイスにはsqlite3データベースバイナリが含まれていないため、エラーが発生します。Android Emeulator、OSX、Linux(インストールされている場合)およびWindows(インストール後)にはバイナリがあるため、マシン上でローカルにデータベースを開くことができます。
回避策は、データベースをデバイスからローカルマシンにコピーすることです。これはADBで実行できますが、いくつかの手順が必要です。
始める前に、いくつかの情報が必要になります。
<package name>
、例えば、com.example.application
<local path>
あなたのデータベース、例えばを配置します。~/Desktop
または%userprofile%\Desktop
次に、以下の例の最初の文字に各コマンドが書き込まれる端末が入力されないことを理解する必要がありますが、どのシェルにあるかを知ることができます。
>
= OSコマンドプロンプト$
= ADBシェルコマンドプロンプト!
=管理コマンドプロンプトとしてのADBシェル%
次に、ターミナルまたはコマンドから次のコマンドを入力します(最初の文字またはテキストは入力しないでください()
)
> adb shell
$ su
! cp /data/data/<package name>/Databases/<database name> /sdcard
! exit
$ exit
> adb pull /sdcard/<database name> <local path>
> sqlite3 <local db path>
% .dump
% .exit (to exit sqldb)
これは、データベースをローカルマシンにコピーし、データベースをローカルで読み取る方法についての非常に重要な方法です。エミュレータからデバイスにsqlite3バイナリをインストールする方法を説明するSOおよびその他のリソースがありますが、一度アクセスすると、このプロセスは機能します。
データベースにインタラクティブにアクセスする必要がある場合は、エミュレーター(既にsqlite3が含まれている)でアプリを実行するか、デバイスの/ xbinパスにsqliteをインストールすることをお勧めします。
cd <ANDROID_SDK_PATH>
(Windowsの私にとってcd C:\Users\Willi\AppData\Local\Android\sdk
)cd platform-tools
adb shell
(これは、1つのエミュレーターのみが実行されている場合にのみ機能します)cd data/data
su
(スーパーユーザー権限を取得します)cd <PACKAGE_NAME>/databases
sqlite3 <DB_NAME>
;
。そうでない場合、ステートメントは発行されず、代わりに改行になります。)注:ディレクトリの内容を一覧表示する必要がある場合は、ls
(Linux)またはdir
(Windows)を使用してください。
adbと入力すると何が表示されますか?
step1. >adb shell
step2. >cd data/data
step3. >ls -l|grep "your app package here"
step4. >cd "your app package here"
step5. >sqlite3 xx.db
adb
... SQLite3シェルで...>
入力すると、コマンドが継続することを期待しています。基本的にを待ってい;
ます。セミコロンをerror: near "adb": syntax error
入力adb shell
すると...コマンドプロンプトに入力すると、adbは認識されたコマンドではないことがわかります...パスファイルにadbを追加する必要がありますか?
/system/bin/sh: sqlite3: not found
...そして私はすでにパス変数としてSQLite3とADBを追加しました...
Stetho
これをbuild.gradle
ファイルに追加すると、と呼ばれる非常に優れたツールを使用できます。
compile 'com.facebook.stetho:stetho:1.4.1'
そしてそれをあなたのApplication
orActivity
onCreate()
メソッドの中で初期化しました:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Stetho.initializeWithDefaults(this);
setContentView(R.layout.activity_main);
}
次に、アドレスのchromeでdbレコードを表示できます。
chrome://inspect/#devices
詳細については、私の投稿を読むことができます:データベースレコードを簡単に表示する方法
デバイスによっては、adbシェルにsqlite3コマンドが見つからない場合があります。その場合、あなたはこれに従うことを望むかもしれません:
adbシェル
$ run-as package.name
$ cd ./databases/
$ ls -l#現在の権限を検索します-r = 4、w = 2、x = 1
$ chmod 666 ./dbname.db
$ exit
$ exit
adb pull / data /data/package.name/databases/dbname.db〜/ Desktop /
adb push〜 / Desktop / dbname.db /data/data/package.name/databases/dbname.db
adb shell
$ run-as package.name
$ chmod 660 ./databases/dbname.db#元の権限を復元する
$ exit
$ exit
参考のためにhttps://stackoverflow.com/a/17177091/3758972にアクセスしてください。
上記の手順を実行すると、「リモートオブジェクトが見つかりません」というメッセージが表示される場合があります。次に、データベースフォルダのアクセス許可をadbシェルで755に変更します。
$ chmod755データベース/
ただし、Androidバージョン<21でのみ機能することに注意してください。