2009-12-26 4 views
10

Я прочитал ответ на вопрос о том, как получить доступ к содержимому баз данных, однако я не могу заставить его работать на моей машине. Вот журнал оболочка:Как вы можете получить доступ к содержимому баз данных 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!)

Спасибо!

+0

«SQLite просто возвращает мои команды ко мне, даже если браузер файлов Eclipse говорит мне, что он существует. Если я использую инструмент sqlite3 и использую« .tables », команды соответствуют epted «. Кажется, что эти два предложения говорят абсолютно противоположные вещи: он одновременно работает и не работает. Не могли бы вы прояснить, что вы имеете в виду здесь? Кроме того, если вы отформатируете исходный код и выходные данные с помощью значка «образец кода» на панели инструментов (101 010), нам будет немного легче читать. – CommonsWare

+0

Я хочу сказать, что если я запустил код выше (в оболочке Android), он возвращается обратно, однако, если я запустил инструмент sqlite3 из командной строки Windows и создаю базу данных, все команды будут работать как ожидалось. Спасибо большое :) – Jumbo

ответ

13

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

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

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

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

0

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