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)?
Author: Farbod Salamat-Zadeh, 2013-07-08

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):

  1. Pobierz i zainstaluj SQLiteBrowser.
  2. 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ę: Tutaj wpisz opis obrazka

      • Przejdź do File Explorer (jedna z zakładek po prawej stronie), przejdź do /data/data/databases Tutaj wpisz opis obrazka

      • 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' : Tutaj wpisz opis obrazka

      • 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.

  3. 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:

Tutaj wpisz opis obrazka

To wszystko. Jest jednak rzeczą oczywistą, że należy cofnąć wszystkie te kroki przed opublikowaniem aplikacji.
 222
Author: ojonugwa ochalifu,
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:

  1. Lista tabel w bazie danych:
    .tables
    
  2. Lista jak tabela wygląda:

    .schema tablename
    
  3. Wydrukuj całą tabelę:

    SELECT * FROM tablename;
    
  4. Lista wszystkich dostępnych poleceń podpowiedzi SQLite:

    .help
    
 169
Author: Distwo,
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
 65
Author: diedthreetimes,
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

 60
Author: w3bshark,
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.

 22
Author: Scott Zhu,
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/

Tutaj wpisz opis obrazka

 22
Author: Ali Zeynali,
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.

SQLScout

Edit: pamiętaj, że jest to płatna wtyczka, ale mieć 24h trial i nadaje się na czas bólu głowy.

 11
Author: Amir Hossein Ghasemi,
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,

 5
Author: MD05,
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

 2
Author: ShankPossible,
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

Tutaj wpisz opis obrazka

 1
Author: nocommit,
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!!

To jest to! Wystarczy nacisnąć przycisk Odtwórz na górze, aby uzyskać zaktualizowaną bazę danych plik, który będzie na Twoim pulpicie.

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.
 1
Author: ᴛʜᴇᴘᴀᴛᴇʟ,
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 "

 1
Author: Asyraf Arifin,
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ę.

Tutaj wpisz opis obrazka

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 .

 1
Author: TheSmile,
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.

Zrzut Ekranu SqlitePrime

Https://play.google.com/store/apps/details?id=com.lastempirestudio.sqliteprime

 1
Author: vovahost,
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 .

Otwórz dane folderu

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

Tutaj wpisz opis obrazka

 1
Author: eLi,
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

  1. View - > Tool Windows - > Device File Explorer
  2. w Eksploratorze plików Dane->dane - > com.(pakiet yourapplication) - > bazy danych
  3. 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

 1
Author: Jawad Zeb,
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:

  1. Widok -- > Okno Narzędzi -- > Eksplorator Plików Urządzeń
  2. wejdź do data/data i znajdź swoją paczkę
  3. Znajdź plik DB, który chcesz zbadać i pobierz go
  4. polecam to narzędzie online: https://sqliteonline.com/ do zbadania pliku db

Innym sposobem jest użycie biblioteki Stetho:

  1. Dodaj Stello do swojego buduj."gradle": {]}

    Compile ' com.facebook.stetho: stetho: 1.5.0 "

  2. Umieść następującą linię na onCreate () swojej klasy aplikacji lub głównej aktywności:

    Steto.initializeWithDefaults (this);

  3. 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.

 1
Author: Gal Rom,
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.

 0
Author: elliptic1,
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