Как вы можете получить доступ к содержимому баз данных 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