Как получить доступ к содержимому баз данных эмулятора Android?

Я прочитал ответ на вопрос о том, как получить доступ к содержимому баз данных, однако, похоже, не могу получить это работать на моей машине. Вот журнал оболочки:

C:\android-sdk-windows\tools>adb -s emulator-5554 shell
# sqlite3 /data/data/com.android.demo.notepad2/databases/notes
sqlite3 /data/data/com.android.demo.notepad2/databases/notes
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> .tables
.tables
sqlite> ^C
C:\android-sdk-windows\tools>

SQLite просто возвращает мне мои команды, даже несмотря на то, что файловый браузер Eclipse сообщает мне, что он существует. Если я использую инструмент sqlite3 и использую «.tables», команды будут приняты.

Отличается ли синтаксис SQLite в эмуляторе, если я что-то упустил?

(Извините за столько вопросов, Похоже, что в Android очень много согласованной документации!)

Спасибо!

10
задан Valery Viktorovsky 18 September 2015 в 09:28
поделиться

2 ответа

Могу сказать, что он отлично работает на Android 2.0.1:

$ adb shell
# cd /data/data/apt.tutorial   
# ls
lib
databases
shared_prefs
# cd databases
# ls
lunchlist.db
# sqlite3 lunchlist.db
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> .tables
android_metadata  restaurants     
sqlite> .exit
# exit

Вы всегда можете скачать файл базы данных с помощью DDMS или adb pull и воспользоваться десктопным SQLite клиентом для его изучения. Например, я использую плагин SQLite Manager для Firefox.

Также помните, что SQLite не имеет расширения файла по умолчанию, поэтому если ваша база данных не notes, а notes.db или notes.sqlite или что-то в этом роде, вам нужно будет указать расширение.

Также, я не пробовал это на Windows, и есть вероятность того, что есть что-то глупое с командной строкой Windows и ограниченной оболочкой, доступной на Android устройствах, что вызывает у вас затруднения.

.
13
ответ дан 3 December 2019 в 21:21
поделиться

Если вы хотите выдавать sqlite3 операторы из командной строки, используйте что-то вроде

$ adb -e shell sqlite3 -batch /data/data/com.example.dbsample/databases/db '.tables'
android_metadata

$ adb -e shell sqlite3 -batch /data/data/com.example.dbsample/databases/db 'select * from android_metadata;'
en_US

, очевидные преимущества заключаются в том, что вы можете положиться на вашу историю оболочки, и вы можете использовать ее в скриптах.

.
3
ответ дан 3 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: