Wyświetl zawartość pliku bazy danych w Android Studio
Używam Android Studio do tworzenia mojej aplikacji, odkąd została wydana.
Wszystko działa ładnie do niedawna, muszę debugować razem z sprawdzaniem pliku bazy danych. Ponieważ Nie wiem, jak zobaczyć bazę danych bezpośrednio, kiedy debugowane do generowania pliku bazy danych, muszę wyeksportować plik bazy danych z mojego telefonu do komputera.
Aby to zrobić, muszę otworzyćDDMS > File Explorer
. Po otwarciu DDMS, muszę ponownie podłączyć USB, i tracę wątek debugowania. Po sprawdzeniu pliku bazy danych muszę zamknąć DDMS i ponownie podłączyć USB, aby wrócić do trybu debugowania.
To zbyt skomplikowane. Czy ktoś ma lepszy sposób na zrobienie tego w Android Studio (wiem, że w Eclipse jest łatwiej)? 18 answers
Przeglądanie baz danych z Android Studio:
Edit: aby wyświetlić bazę danych na emulatorze, wykonaj następujące kroki (dla rzeczywistego urządzenia, przewiń do dołu):
- Pobierz i zainstaluj SQLiteBrowser.
-
Skopiuj bazę danych z urządzenia na komputer:
-
Android Studio wersje :
Otwórz DDMS przez
Tools > Android > Android Device Monitor
Kliknij na Twoje urządzenie po lewej.
Powinieneś zobaczyć swoją aplikację:Przejdź do File Explorer (jedna z zakładek po prawej stronie), przejdź do
/data/data/databases
Wybierz bazę danych, klikając na nią.
Przejdź do prawego górnego rogu okna monitora Urządzenia z systemem Android. Kliknij na 'pobranie pliku z przycisku urządzenia' :
Otworzy się okno z pytaniem, gdzie chcesz zapisz plik bazy danych. zapisz go gdziekolwiek chcesz na komputerze.
-
Android Studio wersje >= 3.0:
Otwórz Device File Explorer Poprzez
View > Tool Windows > Device File Explorer
-
Przejdź do
data > data > PACKAGE_NAME > database
, gdzie nazwa_pakietu jest nazwą Twojego pakietu (jest to com.Film W przykładzie powyżej) Kliknij prawym przyciskiem myszy na bazie danych i wybierz
Save As...
. zapisz go gdziekolwiek chcesz na swoim PC.
-
Teraz otwórz sqlitebrowser , który zainstalowałeś. Kliknij na " otwórz bazę danych ", przejdź do lokalizacji, w której zapisałeś plik bazy danych, iotwórz . Możesz teraz przeglądać zawartość swojej bazy danych.
Aby wyświetlić bazę danych na urządzeniu mobilnym:
Przejdź do tego repozytorium Github i postępuj zgodnie z instrukcjami w readme, aby móc przeglądać bazę danych na swoim urządzeniu. Co? masz coś takiego:
To wszystko. Jest jednak rzeczą oczywistą, że należy cofnąć wszystkie te kroki przed opublikowaniem aplikacji.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-27 20:23:33
Połącz się z Sqlite3 poprzez adb Shell
Nie znalazłem sposobu, aby to zrobić w Android Studio, ale uzyskuję dostęp do db za pomocą zdalnej powłoki, zamiast za każdym razem pobierać plik.
Tutaj znajdziesz wszystkie informacje: http://developer.android.com/tools/help/adb.html#sqlite
1-Przejdź do folderu platform-tools w wierszu polecenia
2 - wprowadź polecenie adb devices
, aby uzyskać listę urządzeń
C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb devices
List of devices attached
emulator-xxxx device
3-Podłącz powłokę do swojego urządzenie:
C:\Android\adt-bundle-windows-x86_64\sdk\platform-tools>adb -s emulator-xxxx shell
4-Przejdź do folderu zawierającego Twój plik db:
cd data/data/<your-package-name>/databases/
5-Uruchom sqlite3, aby połączyć się z Twoim db:
sqlite3 <your-db-name>.db
6-Uruchom polecenia sqlite3, które lubisz np:
Select * from table1 where ...;
Uwaga: Poniżej znajdziesz więcej poleceń do uruchomienia.
SQLite cheatsheet
Istnieje kilka kroków, aby zobaczyć tabele w bazie danych SQLite:
-
Lista tabel w bazie danych:
.tables
-
Lista jak tabela wygląda:
.schema tablename
-
Wydrukuj całą tabelę:
SELECT * FROM tablename;
-
Lista wszystkich dostępnych poleceń podpowiedzi SQLite:
.help
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-23 08:58:38
Najprostsza metoda, gdy nie używasz emulatora
$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/databse_name
$ exit
$ cp /data/data/your.package.name/databases/database_name /sdcard
$ run-as your.package.name # Optional
$ chmod 660 databases/database_name # Optional
$ chmod 660 databases # Optional
$ exit # Optional
$ exit
$ adb pull /sdcard/database_name
Zastrzeżenia:
Dawno tego nie testowałem. Może nie działać na API > =25. Jeśli polecenie cp nie działa, spróbuj zamiast tego wykonać jedną z następujących czynności:# Pick a writeable directory <dir> other than /sdcard
$ cp /data/data/your.package.name/databases/database_name <dir>
# Exit and pull from the terminal on your PC
$ exit
$ adb pull /data/data/your.package.name/databases/database_name
Wyjaśnienie:
Pierwszy blok konfiguruje uprawnienia do odczytu bazy danych. To wykorzystuje run-as
, co pozwala na podszywanie się pod użytkownika pakietu, aby dokonać zmiany.
$ adb shell
$ run-as your.package.name
$ chmod 777 databases
$ chmod 777 databases/databse_name
$ exit # Closes the shell started with run-as
Następnie kopiujemy bazę danych do świata czytelny / zapisywalny katalog. Umożliwia to dostęp Użytkownika ADB pull.
$ cp /data/data/your.package.name/databases/database_name /sdcard
Następnie Zastąp istniejące uprawnienia do odczytu/zapisu. Jest to ważne dla bezpieczeństwa aplikacji, jednak uprawnienia zostaną zastąpione przy następnej instalacji.
$ run-as your.package.name
$ chmod 660 databases/database_name
$ chmod 660 databases
$ exit # Exit the shell started with run-as
Na koniec skopiuj bazę danych na dysk lokalny.
$ exit # Exits shell on the mobile device (from adb shell)
$ adb pull /sdcard/database_name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-18 22:27:34
Jestem bardzo zaskoczony, że nikt nie podał takiego rozwiązania:
Spójrz na Stetho
Używałem Stetho kilka razy do różnych celów (jednym z nich jest inspekcja bazy danych). Na Rzeczywistej stronie , mówią również o funkcjach do kontroli sieci i przeglądania hierarchii widoków.
Wymaga tylko niewielkiej konfiguracji: 1 gradle dependency addition (którą możesz skomentować przy kompilacjach produkcyjnych), kilka linijek kodu aby utworzyć instancję Stetho i przeglądarki Chrome (ponieważ używa Chrome devtools do wszystkiego).
Update : Możesz teraz używać Stetho do przeglądania plików Realm (jeśli używasz Realm zamiast SQLite DB): https://github.com/uPhyca/stetho-realm
Update # 2 : Możesz teraz używać Stetho do przeglądania dokumentów Couchbase: https://github.com/RobotPajamas/Stetho-Couchbase
Update # 3: Facebook skupia wysiłki na dodawaniu wszystkich Stetho funkcje w swoim nowym narzędziu, Flipper. Flipper ma już wiele funkcji, które posiada Stetho. Więc teraz może być dobry moment, aby dokonać zmiany. https://fbflipper.com/docs/stetho.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-16 02:00:40
W końcu znalazłem najprostsze rozwiązanie, które nie wymaga otwierania DDMS.
Właściwie rozwiązanie opiera się na tym, o czym wspomniał @Distwo, ale nie musi to być aż tak skomplikowane.
Najpierw zapamiętaj ścieżkę pliku bazy danych w urządzeniu, powinna ona być taka sama.
Na przykład Mój to: /data/data/com.XXX.module/databases/com.XXX.module.database
Po Drugie , wykonaj to polecenie, które ściągnie plik bazy danych na Twój komputer
adb pull /data/data/com.XXX.module/databases/com.XXX.module.database /Users/somePathOnYourPC/
To, co musisz zrobić, to skopiować i zapisać to polecenie, następnie możesz go używać ponownie i ponownie.
Po Trzecie , Jeśli masz odmowę uprawnień lub coś w tym stylu, po prostu uruchom adb root
przed poprzednim poleceniem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-13 04:32:09
W Android Studio 3 możesz zobaczyć sekcję "Device File Explorer" W prawym dolnym rogu Android Studio.
Otwórz go, wtedy zobaczysz drzewo plików, w tej ścieżce znajdziesz bazę danych aplikacji:
/data/data/{package_name}/databases/
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-28 06:48:21
Wypróbuj wtyczkę android studio sqlscout. możesz przeglądać i edytować bazę danych aplikacji w czasie rzeczywistym.
Edit: pamiętaj, że jest to płatna wtyczka, ale mieć 24h trial i nadaje się na czas bólu głowy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-18 06:11:31
Aby wiedzieć, gdzie przechowywana jest baza danych SQLite stworzona przez Ciebie w android studio, musisz wykonać proste kroki:
1.Run your application
2.Go to Tools--->Android---->Device Monitor
3.Find your application name in left panel
4.Then click on File Explorer tab
5.Select data folder
6.Select data folder again and find your app or module name
7.Click on your database name
8.On right-top window you have an option to pull file from device.
9.Click it and save it on your PC
10.Use FireFox Sqlite manager to attach it to your project.
Aby uzyskać więcej informacji, ten link będzie przydatny. http://www.c-sharpcorner.com/UploadFile/e14021/know-where-database-is-stored-in-android-studio/
Aby zobaczyć swoje dane obecne w pliku db należy pobrać przeglądarkę sqlite lub dodać wtyczkę tego samego w dowolnej przeglądarce, więc trzeba otworzyć plik w przeglądarce i wyświetlić swoje dane.
Pobierz przeglądarkę z http://sqlitebrowser.org/
Oto zrzut ekranu pokazujący przeglądarkę zawierającą bazę danych rejestru
Dzięki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-23 12:15:18
Po przejrzeniu wszystkich rozwiązań zaproponuję
Użyj Stetos
Lets see how Simple it is
Dodaj następujące zależności W build.gradle file
compile 'com.facebook.stetho:stetho:1.5.0'
compile 'com.facebook.stetho:stetho-js-rhino:1.4.2'
Następnie przejdź do głównej metody OnCreate Dodaj następujący wiersz
Stetho.initializeWithDefaults(this);
To wymagałoby od ciebie
import com.facebook.stetho.Stetho;
Teraz podczas uruchamiania aplikacji z android studio, Otwórz Chrome i wpisz Typ paska adresu
chrome: / / inspect /
W zakładce zasoby > web SQL sprawdź bazę danych i tabelę graj z nim w czasie rzeczywistym łatwo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-03 14:18:29
To może nie jest odpowiedź, której szukasz, ale nie mam lepszego sposobu na pobranie DB z telefonu. Proponuję upewnić się, że używasz tego mini-DDMS. Będzie to bardzo Ukryte, jeśli nie klikniesz bardzo małego pola camoflage w lewym dolnym rogu programu. (próbował unosić się nad nim w przeciwnym razie może go przegapić.)
Również rozwijane z napisem brak filtrów (prawy górny róg). Dosłownie ma mnóstwo różnych sposobów monitorowania różnych procesów / aplikacji przez PPID, nazwa i wiele więcej. Zawsze używałem tego do monitorowania telefonu, ale pamiętaj, że nie robię tego typu prac programistycznych, które muszą być w 120% pozytywne, że baza danych nie robi czegoś niezwykłego.
Hope it helps
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-13 11:18:29
To bardzo stare pytanie i moja odpowiedź jest podobna do niektórych odpowiedzi powyżej, ale zrobiona znacznie szybciej. Poniższy skrypt jest dla Mac, ale jestem pewien, że ktoś może zmodyfikować go dla Windows.
1) Otwórz Edytor skryptów na komputerze Mac (możesz po prostu wyszukać Edytor skryptów w Spotlight)
2) Skopiuj i wklej poniższy tekst i zmodyfikuj go za pomocą ścieżki SDK, nazwy pakietu itp. (patrz niżej)
3) Zapisz skrypt!!
Zastąp następujące rzeczy w poniższym skrypcie:
path_to_my_sdk ==>> umieść pełną ścieżkę do swojego sdk
my_package_name ==>> Nazwa pakietu aplikacji
myDbName.db ==>> nazwa pliku bazy danych
set getLocalDb to "path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases && path_to_my_sdk/platform-tools/adb shell run-as my_package_name chmod 777 databases/myDbName.db && path_to_my_sdk/platform-tools/adb shell run-as my_package_name cp databases/myDbName.db /sdcard/myDbName.db && path_to_my_sdk/platform-tools/adb pull /sdcard/myDbName.db /Users/User/Desktop/myDbName.db"
do shell script getLocalDb
Mam nadzieję, że to komuś pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-27 19:35:21
Używam systemu windows 7, moje urządzenie to emulowane urządzenie Android API 23. Przypuszczam, że jest to takie samo dla każdego prawdziwego urządzenia, o ile jest zakorzenione i API nie jest powyżej 23
Przejdź do Narzędzia - > Android - > Android Monitor urządzenia. Przejdź do Eksploratora plików. W moim przypadku jest to w data / data/ / app_webview / databases/file_0 / 1
Muszę ręcznie dodać .db na końcu pliku o nazwie " 1 "
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 03:33:23
Wiem, że pytanie jest dość stare, ale uważam, że ta kwestia jest nadal obecna.
Przeglądanie baz danych z przeglądarki
Stworzyłem narzędzie programistyczne, które można zintegrować jako lib do projektu aplikacji na Androida. Narzędzie otwiera Gniazdo serwera w aplikacji, aby komunikować się za pośrednictwem przeglądarki internetowej. Możesz przeglądać całą bazę danych i pobrać plik bazy danych bezpośrednio przez przeglądarkę.
Integracja może odbywać się poprzez jitpack.io:
Budowa projektu.gradle:
//...
allprojects {
repositories {
jcenter()
maven { url 'https://jitpack.io' }
}
}
//...
Tworzenie aplikacji.gradle:
//...
dependencies {
//...
debugCompile 'com.github.sanidgmbh:debugghost:v1.1'
//...
}
//...
Klasa aplikacji Setup
Aby skompilować DebugGhostLib tylko w pewnych typach kompilacji lub smakach produktu, potrzebujemy abstrakcyjnej klasy aplikacji, która zostanie wyprowadzona w specjalnych smakach. Umieść następującą klasę w swoim folderze main
(POD java
> your.app.package
):
public class AbstractDebugGhostExampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// Do your general application stuff
}
}
Teraz, dla typu release build (lub produktu), dodajesz następującą klasę aplikacji do Twój release
(lub produkt-smak) folder (również pod java
> your.app.package
):
public class MyApp extends AbstractDebugGhostExampleApplication {
@Override
public void onCreate() {
super.onCreate();
}
}
Jest to klasa aplikacji, która będzie, a nie odwoływać się do DebugGhostLib.
Powiedz również AndroidManifest.xml
, że używasz własnej klasy aplikacji. Zostanie to zrobione w Twoim main
folderze:
<manifest package="demo.app.android.sanid.com.debugghostexample" xmlns:android="http://schemas.android.com/apk/res/android">
<!-- permissions go here -->
<application android:name=".MyApp"> <!-- register your own application class -->
<!-- your activities go here -->
</application>
</manifest>
Teraz, dla typu debug build (lub product-flavour), dodajesz następującą klasę aplikacji do folderu debug
(lub product-flavour) (również pod java
> your.app.package
):
public class MyApp extends AbstractDebugGhostExampleApplication {
private DebugGhostBridge mDebugGhostBridge;
@Override
public void onCreate() {
super.onCreate();
mDebugGhostBridge = new DebugGhostBridge(this, MyDatabaseHelper.DATABASE_NAME, MyDatabaseHelper.DATABASE_VERSION);
mDebugGhostBridge.startDebugGhost();
}
}
Ty możesz pobrać narzędzie tutaj .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-05 09:44:07
Musiałem pobrać bazę danych z telefonu do komputera. Teraz korzystam z tej bardzo dobrze wykonanej i darmowej aplikacji, która ma wiele funkcji. Działa na API 4.1+
z urządzeniem Rooted .
Daj mi znać, jeśli znajdziesz, Jak to działa bez roota.
Https://play.google.com/store/apps/details?id=com.lastempirestudio.sqliteprime
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-20 23:07:49
Otwórz plik Urządzenia Explore Terminal u dołu Android Studio.
Otwórz folder o nazwie Data , a następnie ponownie otwórz Folder Data .
Przewiń w dół listę folderów i znajdź folder za pomocą your.package.name. Otwórz folder your.package.name > Baza Danych . Dostajesz swoje.databaseName . Kliknij prawym przyciskiem myszy Twój.databaseName i zapisz jako do C:/your/Computer/Directory.
Idź do C:/your/Computer/Directory otwórz swoje.databaseName with DB SQLite
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 05:05:53
Dla Android Studio 3.X
- View - > Tool Windows - > Device File Explorer
- w Eksploratorze plików Dane->dane - > com.(pakiet yourapplication) - > bazy danych
- Kliknij prawym przyciskiem myszy na bazie danych i zapisz na lokalnym komputerze. Aby otworzyć, plik można użyć SQLite Studio, przeciągając na nim plik bazy danych.
Oto link do SQLite Studio : https://sqlitestudio.pl/index.rvt?act=download
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-06 06:40:01
Najprostszym sposobem jest podłączenie urządzenia i uruchomienie Android Studio Następnie Z Paska Narzędzi:
- Widok -- > Okno Narzędzi -- > Eksplorator Plików Urządzeń
- wejdź do data/data i znajdź swoją paczkę
- Znajdź plik DB, który chcesz zbadać i pobierz go
- polecam to narzędzie online: https://sqliteonline.com/ do zbadania pliku db
Innym sposobem jest użycie biblioteki Stetho:
-
Dodaj Stello do swojego buduj."gradle": {]}
Compile ' com.facebook.stetho: stetho: 1.5.0 "
-
Umieść następującą linię na onCreate () swojej klasy aplikacji lub głównej aktywności:
Steto.initializeWithDefaults (this);
-
Podłącz urządzenie, uruchom aplikację i wejdź na następującą stronę w Chrome:
Chrome: / / inspect/ # devices
I tyle. teraz możesz przeglądać swoje stoły.
Uwaga: zaleca się usunięcie zależności przed przejście do produkcji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-14 10:33:41
Przygotowałem uniksową automatyzację tego procesu z linii poleceń i umieściłem tutaj kod:
Https://github.com/elliptic1/Android-Sqlite3-Monitor
Jest to skrypt powłoki, który pobiera nazwę pakietu i nazwę bazy danych jako parametry, pobiera plik bazy danych z załączonego Urządzenia z Androidem i uruchamia własny skrypt na pobranym pliku. Następnie, za pomocą narzędzia uniksowego, takiego jak "watch", możesz mieć otwarte okno terminala z okresowo aktualizowanym widokiem wyjście skryptu bazy danych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-24 03:51:04