Как получить доступ к содержимому баз данных Android Emulator? - PullRequest
10 голосов
/ 26 декабря 2009

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

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 не так много согласованной документации!)

Спасибо!

Ответы [ 4 ]

13 голосов
/ 26 декабря 2009

Могу сказать, что у меня на 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, есть что-то глупое, что вызывает ваши трудности.

3 голосов
/ 05 января 2010

Если вы хотите выдавать операторы 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

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

1 голос
/ 09 ноября 2010

У меня была такая же проблема, и я обнаружил, что в отличие от документации не следует указывать расширение ".db" для имени файла базы данных.

Примечание: я использую эмулятор win7 и 2.1.

0 голосов
/ 24 мая 2016

У меня была та же проблема, я потратил почти час, публикуя здесь, чтобы сэкономить время, проверьте, правильно ли вы указали имя файла вместе с расширением, в папке баз данных myDB.db есть два файла myDB.db-journal и когда я запускаю
"sqlite3 /data/data/com.my.package/databases/myDB"
и
.tables
ничего не перечислил, sqlite3 создал новую базу данных с именем myDB, он не открыл myDB.db

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...