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

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

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

Спасибо!

Ответ 1

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

Ответ 2

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

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

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

Ответ 4

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