Stworzyłem bazę danych sqlite programowo z domyślnym sposobem rozszerzania SQLiteOpenHelper
i nadpisywania onCreate()
. W ten sposób baza danych jest tworzona w locie w razie potrzeby.
Chciałbym sprawdzić zawartość pliku db na komputerze z systemem OS X za pomocą przeglądarki sqlite. Znam nazwę pliku db, ale nie mogę go znaleźć na urządzeniu. Połączyłem się z urządzeniem przez USB i szukałem wyszukiwarki i terminala, ale po prostu nie mogę znaleźć pliku db.
Jaka jest domyślna lokalizacja baz danych sqlite na urządzeniu z systemem Android?
Odpowiedzi:
Możesz znaleźć utworzoną bazę danych o nazwie
<your-database-name>
w
Wyciągnij go za pomocą Eksploratora plików i zmień jego nazwę na rozszerzenie .db3, aby używać go w SQLiteExplorer
Użyj eksploratora plików DDMS, aby przejść do katalogu emulatora.
źródło
700
. Aby to zobaczyć, potrzebujesz uprawnień roota.W tym celu zrobiłem
Aby to zrobić, Twoja aplikacja musi mieć uprawnienia dostępu do karty SD, dodaj następujące ustawienie do pliku manifest.xml
Nie jest to genialny sposób, ale działa.
źródło
Kontekst zawiera wiele funkcji ścieżek: Context.getXXXPath ()
Jedną z nich jest android.content.Context.getDatabasePath (String dbname), która zwraca bezwzględną ścieżkę do bazy danych o nazwie dbname.
W tym przypadku zwracana ścieżka wyglądałaby następująco:
Zauważ, że ta ścieżka jest generowana automatycznie, jeśli używasz SQLiteOpenHelper do otwierania bazy danych.
źródło
Jeśli mówisz o prawdziwym urządzeniu
/data/data/<application-package-name>
jest niedostępne. Musisz mieć prawa roota ...źródło
sudo su
To jest stare pytanie, ale odpowiedź może pomóc innym.
Domyślna ścieżka, w której Android zapisuje bazy danych, nie może być dostępna na urządzeniach nierootowanych. Tak więc najłatwiejszym sposobem uzyskania dostępu do pliku bazy danych (tylko w przypadku środowisk debugowania) jest zmodyfikowanie konstruktora klasy:
Pamiętaj o zmianie dla środowisk produkcyjnych z tymi liniami:
źródło
Failed to open database '/mnt/sdcard/itens'.
wLogcat
/data/data/packagename/databases/
to znaczy
/data/data/com.example.program/databases/
źródło
Baza danych SQLite to tylko plik. Możesz zabrać ten plik, przenieść go, a nawet skopiować do innego systemu (na przykład z telefonu na stację roboczą) i będzie działać dobrze. Android przechowuje plik w
/data/data/packagename/databases/
katalogu. Możesz użyćadb command
lubFile Explorer view
w Eclipse (Window > Show View > Other... > Android > File Explorer
), aby go wyświetlić, przenieść lub usunąć.źródło
cóż, to może być późno, ale to pomoże. Możesz uzyskać dostęp do bazy danych bez rootowania urządzenia przez adb
uruchom adb za pomocą cmd i wpisz następujące polecenia
Teraz możesz otworzyć od teraz.
źródło
Jeśli nazwiesz swoją bazę danych jako plik bez podawania ścieżki, najczęstszym sposobem uzyskania jej folderu jest:
gdzie
DBAdapter.DATABASE_NAME
jest po prostuString
„mydatabase.db”.Context.getFilesDir()
zwraca ścieżkę do plików aplikacji, takich jak:/data/data/<your.app.packagename>/files/
dlatego musisz.getParent()+"/databases/"
, aby zamiast tego usunąć „pliki” i dodać „bazy danych”.BTW Eclipse ostrzeże Cię o zakodowanym na stałe ciągu „data / data /”, ale nie w tym przypadku.
źródło
I sprawdź, czy Twoja baza danych jest przechowywana w pamięci urządzenia. Jeśli tak, musisz użyć uprawnienia w pliku Manifest.xml:
źródło
Możesz uzyskać do niego dostęp za pomocą instrukcji powłoki adb
Treść z powyższego linku:
źródło
Jeśli aplikacja tworzy bazę danych, ta baza danych jest domyślnie zapisywana w katalogu
DATA/data/APP_NAME/databases/FILENAME.
Części powyższego katalogu są zbudowane w oparciu o następujące zasady. DATA to ścieżka zwracana przez metodę Environment.getDataDirectory (). APP_NAME to nazwa Twojej aplikacji. NAZWA PLIKU to nazwa podana w kodzie aplikacji dla bazy danych.
źródło
Możesz również sprawdzić, czy Twoje IDE ma narzędzie, takie jak perspektywa DDMS Eclipse, które umożliwia przeglądanie katalogu i / lub kopiowanie plików do iz Emulatora lub zrootowanego urządzenia.
źródło
Zdefiniuj nazwę bazy danych, na przykład:
A swoją bazę danych możesz zobaczyć w:
źródło
Nie koduj na stałe „/ sdcard /”; zamiast tego użyj Environment.getExternalStorageDirectory (). getPath ()
źródło
Nie używaj ścieżki na stałe, takiej jak
//data/data/<Your-Application-Package-Name>/databases/<your-database-name>
. Cóż, działa w większości przypadków, ale ten nie działa na urządzeniach, w których urządzenie może obsługiwać wielu użytkowników. Ścieżka może być podobna//data/user/10/<Your-Application-Package-Name>/databases/<your-database-name>
. Możliwym rozwiązaniem jest użyciecontext.getDatabasePath(<your-database-name>)
.źródło