この問題で私を助けてくれませんか。
Sqliteデータベースに値を挿入しています。
挿入したデータを確認または表示するにはどうすればよいですか。
データを表示するためのツールやその他の手法はありますか?
Androidアプリケーションに最適なSqliteデバッグツールは
StethoFacebookによる
http://facebook.github.io/stetho/
StethoはAndroidアプリケーション用の洗練されたデバッグブリッジです。有効にすると、開発者はChrome開発者ツール機能にChromeデスクトップブラウザ開発者は、アプリケーション内部への強力なコマンドラインインターフェイスを提供するオプションのdumpappツールを有効にすることもできます。
ダウンロードまたはまたはGradleまたはMavenを介してMaven CentralのStethoを含めることができます。
// Gradle dependency on Stetho
dependencies {
compile 'com.facebook.stetho:stetho:1.5.1'
}
<dependency>
<groupid>com.facebook.stetho</groupid>
<artifactid>stetho</artifactid>
<version>1.5.1</version>
</dependency>
主なstetho依存関係のみが厳密に必要ですが、ネットワークヘルパーの1つを使用することもできます。
dependencies {
compile 'com.facebook.stetho:stetho-okhttp3:1.5.1'
}
または
dependencies {
compile 'com.facebook.stetho:stetho-okhttp:1.5.1'
}
または
dependencies {
compile 'com.facebook.stetho:stetho-urlconnection:1.5.1'
}
統合
セットアップ
Stethoとの統合は、ほとんどの既存のAndroidアプリケーションに対してシームレスで簡単であることを目的としています。Application class:
で発生する簡単な初期化ステップがあります
public class MyApplication extends Application {
public void onCreate() {
super.onCreate();
Stetho.initializeWithDefaults(this);
}
}
これにより、ほとんどのデフォルト設定が表示されますが、一部の追加フック(特に、ネットワーク検査)は有効になりません。個々のサブシステムの具体的な詳細については、以下を参照してください。
Enable Network Inspection
2.2.x +または3.xリリースで人気のあるOkHttpライブラリを使用している場合は、Interceptorsシステムを使用して、既存のスタックに自動的にフックできます。これは現在、ネットワーク検査を有効にする最も単純で最も簡単な方法です。
OkHttp 2.xの場合
OkHttpClient client = new OkHttpClient();
client.networkInterceptors().add(new StethoInterceptor());
OkHttp 3.xの場合
new OkHttpClient.Builder()
.addNetworkInterceptor(new StethoInterceptor())
.build();
インターセプターは要求と応答を変更できるため、ネットワークトラフィックを正確に把握するには、他のすべてのインターセプターの後にStethoインターセプターを追加します。
HttpURLConnection
を使用している場合は、StethoURLConnectionManager
を使用して統合を支援できますが、このアプローチにはいくつかの注意点があることに注意してください。特に、Stethoが圧縮ペイロードサイズを報告するためには、Accept-Encoding: gzip
をリクエストヘッダーに明示的に追加し、圧縮応答を手動で処理する必要があります。
詳細については stetho をご覧ください。
Log
にデータを表示したい場合は、以下のコードを試してください:
for (Contact cn : contacts) {
String log = "Id: "+cn.getID()+" ,Name: " + cn.getName() + " ,Phone: " + cn.getPhoneNumber();
// Writing Contacts to log
Log.d("Name: ", log);
database
を表示する他の方法は、以下の手順を参照してください:
Tools -> DDMS
に移動するか、ツールバーのSDK Managerの横にあるデバイスモニターアイコンをクリックします。data -> data -> your project name.
]をクリックします。その後、データベースファイルが開きます。 pull a file from device icon.
をクリックします。db拡張子を使用してファイルを保存します。Tools -> SQLiteManager.
DDMS
にデータベースをダウンロードする場合、ダウンロードします
DB.Browser.for.SQLite-3.10.1-win64
このソフトウェアにdatabase
ファイルを置くと、データを取得できます。
私は今すぐ回答を更新しますAndroid Studio update in Android Studio 3.1 or up to like now 3.2 in this Studio[〜#〜] ddms [〜#〜]関数は使用できませんが、心配しないでください。別の解決策があります。
あなたのAndroid Studioの右側の下隅を参照してください)のような1つのオプションがありますデバイスファイルエクスプローラーこのボタンをクリックします
その後、次のような画像が画面に表示されます。
次に、data -> data -> your project name.
:)を選択します
誰もこれについて言及していないとは信じられませんが、おそらくあなたが探しているのは Android Debug Database です。
Android Roomでも使用できます。テーブルやレコードを表示、編集できます。
承認しましたが、Cassius Clay's
回答、生データを処理する必要がある場合
ルートは必要ありません(SDカードにない場合は、@ Ankitの回答に従ってください)
import os
import sys
import subprocess
import sqlite3
import pandas as pd
arg_folder = sys.argv[1] # root folder to recursively search db files from
output_lines = subprocess.check_output(['adb', 'Shell', ('ls -R %s' % arg_folder)]).decode('utf-8').splitlines()
db_files = []
current_folder = ''
for line in output_lines:
"""
Output example for 'ls -R /data/data':
/data/data/org.fdroid.fdroid/files/fdroid/repo/icons:
/data/data/org.fdroid.fdroid/shared_prefs:
apks-pending-install.xml
org.fdroid.fdroid_preferences.xml
/data/data/ru.meefik.busybox:
cache
files
lib
shared_prefs
if line contains '/' it's a directory, we want to extract the full path for '.db' files
"""
if line.__contains__('/'):
current_folder = line
Elif line.endswith('.db'):
db_files.append('%s/%s' % (current_folder[:-1], line))
print("Listing databases..")
while True:
try:
for idx, full_path in enumerate(db_files):
print("{}) {}".format(idx + 1, full_path))
i = input("Enter database number : ")
db = db_files[int(i) - 1] # selected database
subprocess.check_output(['adb', 'pull', db]) # pulling the .db file from device to local
db = db.split('/')[-1] # "/data/data/com.app/folder/private.db".split('/')[-1] = private
conn = sqlite3.connect(db)
# getting list of current database tables
tables = conn.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall()
for table in tables:
table = table[0] # little fix, it comes as a Tuple
print('%s%s' % (db[:-2], table))
with pd.option_context('display.width', 1000): # setting terminal width to view all table columns inline
print(pd.read_sql_query("SELECT * FROM %s" % table, conn)) # print table content
print('- ' * 50) # table print separator
# cleanup
if input('remove database file (from local) [y/N] ? ').lower() == 'y':
print('removing ', db)
os.remove(db)
# repeat
c = input("Press ENTER to continue or CTRL+C to Quit..")
except KeyboardInterrupt:
exit(0)
これは、人間に優しくない非常に長いワンライナーです
read -p "enter root folder to recursively search db files from: " f;dbs=( $(adb Shell ls -R $f |
while read line
do
line=$(echo $line | tr -d '\r')
if [[ "$line" =~ ^/.*:$ ]]
then
dir=${line%:}
Elif [[ "$line" = "opendir failed" ]]
then
echo "$dir - permission denied"
else
if [[ "$dir" = "/" ]]; then dir=""; fi
echo "$dir/$line" | grep '\.db$'
fi
done)
);echo ${dbs[@]}; dbs+=(exit);select db in "${dbs[@]}"; do
[[ $db == exit ]] && break
echo "You have chosen $db"
adb pull $db
python -c 'import sqlite3;import pandas as pd;db=sqlite3.connect("'${db##*/}'");tables=db.cursor().execute("SELECT name FROM sqlite_master WHERE type=\"table\";").fetchall();print([pd.read_sql_query("SELECT * FROM %s" % t[0], db) for t in tables]);'
done
文書化するのが面倒なのでGIF
DDMSアプローチは非ルート化デバイスでは機能しません
私は ルート化されていないデータベースを確認する方法Androidデバイス を使用して、デバイスからPCにSqlite DBをインポートします。
次の手順に従ってください。
adb Shell run-as [パッケージ] chmod 777/data/data/[パッケージ]/databases /
adb Shell run-as [パッケージ] chmod 777/data/data/[パッケージ]/databases/[db_file_name]
adb Shell run-as [パッケージ] cp/data/data/[パッケージ]/databases/[db_file_name]/sdcard /
adb pull/sdcard/[db_file_name]
4.プルされたSQLite DBをフォルダーsdk> platform-toolsで確認します。
これで、任意のSQLiteビューアーを使用して、プルされたデータベースを表示できます。
注:マニフェストファイルには2つの権限が必要です。それ以外の場合、データはプルされたDBにコピーされません
Android.permission.WRITE_EXTERNAL_STORAGE Android.permission.READ_EXTERNAL_STORAGE
このライブラリ(データベースデバッグデータベース)を使用して、共有設定データを含むすべてのDBテーブルデータを追加、編集、チェックできます このリンクをクリックしてインストールします 。
必要なのは、依存関係を置き、プログラムをコンパイルして実行することだけです。ブラウザに(your_package_name D/DebugDB:Open http://172.16.6.117:8081 のようなリンクがあります。 )ブラウザですべてのDBを表示するlogcatで