我在SQLite数据库中有一组数据。我需要在设备上查看数据库。我该怎么做?
我已经检查了ddms模式。文件资源管理器中的数据为空。
答案 0 :(得分:182)
以下是逐步说明(主要取自其他答案的组合)。这甚至适用于未植根的设备。
连接您的设备并以调试模式启动应用程序。
您可能希望使用adb -d shell "run-as com.yourpackge.name ls /data/data/com.yourpackge.name/databases/"
来查看数据库文件名是什么。
注意: com.yourpackge.name
是您的应用程序包名称。您可以从清单文件中获取它。
将数据库文件从应用程序文件夹复制到SD卡。
adb -d shell "run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite > /sdcard/filename.sqlite"
注意: filename.sqlite是您在创建数据库时使用的数据库名称
将数据库文件拉到您的计算机上:
adb pull /sdcard/filename.sqlite
这会将数据库从SD卡复制到您的ADB所在的位置。
安装Firefox SQLite Manager:https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/
打开Firefox SQLite Manager(Tools-> SQLite Manager)并从上面的步骤3打开您的数据库文件。
享受!
答案 1 :(得分:75)
从here获取,您可以尝试:
在build.gradle中:
random_row
在应用程序对象中初始化库:
dependencies {
// Stetho core
compile 'com.facebook.stetho:stetho:1.5.0'
//If you want to add a network helper
compile 'com.facebook.stetho:stetho-okhttp:1.5.0'
}
您可以通过Stetho.initializeWithDefaults(this);
答案 2 :(得分:54)
到目前为止,我发现的最好的方法是使用Android-Debug-Database工具。
使用和设置非常简单,只需添加依赖关系并通过Web连接到设备数据库的界面。无需根电话或添加活动或任何其他活动。以下是步骤:
第1步
将以下依赖项添加到您应用的Gradle文件并运行该应用程序。
debugCompile 'com.amitshekhar.android:debug-db:1.0.0'
第2步
打开浏览器并在端口8080上访问手机的IP地址。网址应如下:http://YOUR_PHONE_IP_ADDRESS:8080
。您将看到以下内容:
注意:您也可以通过调用方法DebugDB.getAddressLog();
要获取我手机的IP,我目前使用Ping工具,但有很多替代方案。
第3步
那就是它!
官方文档中的更多详细信息: https://github.com/amitshekhariitbhu/Android-Debug-Database
答案 3 :(得分:53)
查看和管理Android应用数据库的最佳方法是使用库DatabaseManager_For_Android。
它是一个单独的Java活动文件;只需将其添加到源文件夹即可。 您可以在应用程序数据库中查看表,更新,删除,向表中插入行。应用程序内部的所有内容。
开发完成后,从src文件夹中删除Java文件。那就是它。
您可以查看5分钟的演示, Database Manager for Android SQLite Database 。
答案 4 :(得分:17)
你可以这样做:
adb shell
cd /go/to/databases
sqlite3 database.db
sqlite>
提示符下,键入.tables
。这将为您提供database.db文件中的所有表。select * from table1;
答案 5 :(得分:14)
如果您使用的是真实设备,并且未使用root设备,则无法在FileExplorer
中看到您的数据库,因为由于某些安全原因,该文件夹已在Android系统中锁定。如果您在模拟器中使用它,您将在FileExplorer
, / data / data / your package name / databases / yourdatabse.db 中找到它。
答案 6 :(得分:7)
答案 7 :(得分:4)
虽然这不会直接在您的设备上查看数据库,但我发布了一个简单的shell脚本,用于将数据库转储到本地计算机:
它执行两种不同的方法:
\r
个字符。从这里,您可以使用各种CLI或GUI SQLite应用程序(例如sqlite3
或sqlitebrowser
)来浏览数据库的内容。
答案 8 :(得分:4)
我一直在使用SQLite Database Browser来查看Android开发中的SQLite DB内容。您必须先从设备中提取数据库文件,然后在SQLite数据库浏览器中打开它。
答案 9 :(得分:3)
第1步 Copy this class in your package
第2步 将以下代码放在扩展SQLiteOpenHelper的类中。
[http://jsbin.com/pemimilimi/edit?html,css,js,output][1]
第3步 在清单中注册
//-----------------for show databasae table----------------------------------------
public ArrayList<Cursor> getData(String Query)
{
//get writable database
SQLiteDatabase sqlDB =this.getWritableDatabase();
String[] columns = new String[] { "mesage" };
//an array list of cursor to save two cursors one has results from the query
//other cursor stores error message if any errors are triggered
ArrayList<Cursor> alc = new ArrayList<Cursor>(2);
MatrixCursor Cursor2= new MatrixCursor(columns);
alc.add(null);
alc.add (null);
try{
String maxQuery = Query ;
//execute the query results will be save in Cursor c
Cursor c = sqlDB.rawQuery(maxQuery, null);
//add value to cursor2
Cursor2.addRow(new Object[] { "Success" });
alc.set(1,Cursor2);
if (null != c && c.getCount() > 0)
{
alc.set(0,c);
c.moveToFirst();
return alc ;
}
return alc;
}
catch(SQLException sqlEx)
{
Log.d("printing exception", sqlEx.getMessage());
//if any exceptions are triggered save the error message to cursor an return the arraylist
Cursor2.addRow(new Object[] { ""+sqlEx.getMessage() });
alc.set(1,Cursor2);
return alc;
}
catch(Exception ex)
{
Log.d("printing exception",ex.getMessage());
//if any exceptions are triggered save the error message to cursor an return the arraylist
Cursor2.addRow(new Object[] { ""+ex.getMessage() });
alc.set(1,Cursor2);
return alc;
}
}
第4步
<activity
android:name=".database.AndroidDatabaseManager"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"/>
答案 10 :(得分:3)
请按照以下步骤操作
1 &gt;从here下载* .jar文件。
2 &gt;将* .jar文件放入eclipse / dropins /文件夹并重新启动eclipse。
3 &gt;在eclipse的右上角,点击DDMS图标。
4 &gt;在左侧面板中选择正确的模拟器。
5 在主面板的“文件资源管理器”选项卡中,转到/data/data/[YOUR.APP.NAMESPACE]/databases。
6 &gt;在DDMS图标下方,当您选择数据库时,应该会有一个数据库的新蓝色图标亮起。单击它,您将看到一个Questoid Sqlite Manager选项卡打开以查看您的数据。
*注意:如果数据库没有亮起,可能是因为您的数据库没有* .db文件扩展名。确保您的数据库名为[DATABASE_NAME] .db
*注意:如果您想使用不带.db-Extension的数据库:
- 下载此Questoid SqLiteBrowser:Download fro here。
-Unzip并将其放入eclipse / dropins(不是插件)。
- 查看此信息以获取更多信息 Click here
答案 11 :(得分:3)
答案 12 :(得分:2)
这适用于Android 6.0(至少可调试的应用程序):
adb shell "run-as your.package.name cp /data/data/your.package.name/databases/you-db-name /sdcard/file_to_write"
然后,您只需使用aSQLiteManager查看数据库。
答案 13 :(得分:2)
您可以尝试SQLiteOnWeb。它在浏览器中管理您的SQLite数据库。
答案 14 :(得分:2)
希望这有助于你
使用终端首先指出您所在的位置和/或sdk
eg: C:\Users\AppData\Local\Android\sdk\platform-tools>
然后检查使用
附加的设备列表 adb devices
然后运行此命令将文件从设备复制到系统
adb -s YOUR_DEVICE_ID shell run-as YOUR_PACKAGE_NAME chmod -R 777 /data/data/YOUR_PACKAGE_NAME/databases && adb -s YOUR_DEVICE_ID shell "mkdir -p /sdcard/tempDB" && adb -s YOUR_DEVICE_ID shell "cp -r /data/data/YOUR_PACKAGE_NAME/databases/ /sdcard/tempDB/." && adb -s YOUR_DEVICE_ID pull sdcard/tempDB/ && adb -s YOUR_DEVICE_ID shell "rm -r /sdcard/tempDB/*"
您可以在此路径中找到数据库文件
Android\sdk\platform-tools\tempDB\databases
答案 15 :(得分:1)
有TKlerx的 Android SQLite browser for Eclipse ,它与Android Studio一起完全正常运行。我会推荐它,因为它非常实用。
要在Device Monitor上安装它,只需将JAR文件放在[Path to Android SDK folder]/sdk/tools/lib/monitor-[...]/plugins
。
答案 16 :(得分:0)
第一篇文章(https://stackoverflow.com/a/21151598/4244605)对我不起作用。
我为从设备获取DB文件编写了自己的脚本。没有根。工作正常。
~/android-sdk/platform-tools
)。./getDB.sh -p <packageName>
获取数据库名称。用法:./getDB.sh -p <packageName> -n <name of DB> -s <store in mobile device>
用于获取DB文件(执行脚本)目录。
我建议您将DB的文件名设置为* .sqlite,然后使用Firefox插件打开它:SQLite Manager。
(很长一段时间,当我用Bash写的东西时。你可以编辑这段代码。)
#!/bin/sh
# Get DB from Android device.
#
Hoption=false
Poption=false
Noption=false
Soption=false
Parg=""
Narg=""
Sarg=""
#-----------------------FUNCTION--------------------------:
helpFunc(){ #help
echo "Get names of DB's files in your Android app.
Usage: ./getDB -h
./getDB -p packageName -n nameOfDB -s storagePath
Options:
-h Show help.
-p packageName List of databases for package name.
-p packageName -n nameOfDB -s storagePath Save DB from device to this directory."
}
#--------------------------MAIN--------------------------:
while getopts 'p:n:s:h' options; do
case $options in
p) Poption=true
Parg=$OPTARG;;
n) Noption=true
Narg=$OPTARG;;
s) Soption=true
Sarg=$OPTARG;;
h) Hoption=true;;
esac
done
#echo "-------------------------------------------------------
#Hoption: $Hoption
#Poption: $Poption
#Noption: $Noption
#Soption: $Soption
#Parg: $Parg
#Narg: $Narg
#Sarg: $Sarg
#-------------------------------------------------------"\\n
#echo $# #count of params
if [ $Hoption = true ];then
helpFunc
elif [ $# -eq 2 -a $Poption = true ];then #list
./adb -d shell run-as $Parg ls /data/data/$Parg/databases/
exit 0
elif [ $# -eq 6 -a $Poption = true -a $Noption = true -a $Soption = true ];then #get DB file
#Change permissions
./adb shell run-as $Parg chmod 777 /data/data/$Parg/databases/
./adb shell run-as $Parg chmod 777 /data/data/$Parg/databases/$Narg
#Copy
./adb shell cp /data/data/$Parg/databases/$Narg $Sarg
#Pull file to this machine
./adb pull $Sarg/$Narg
exit 0
else
echo "Wrong params or arguments. Use -h for help."
exit 1;
fi
exit 0;
答案 17 :(得分:0)
我发现非常简单的库stetho来浏览chrome中的sqlite数据库,see
答案 18 :(得分:0)
使用文件资源管理器,您可以像这样找到您的数据库文件:
data-->data-->your.package.name-->databases--->yourdbfile.db
然后您可以使用任何前端的SQLite来探索您的数据库。我使用SQLite Manager Firefox插件。这很好,小而且快。