web-dev-qa-db-fra.com

Comment afficher la base de données SQLite sur un périphérique Android?

J'ai un ensemble de données dans une base de données SQLite. J'ai besoin de voir la base de données sur un appareil. Comment je fais ça?

J'ai vérifié en mode DDM. Les données dans l'explorateur de fichiers sont vides.

122
user

Voici des instructions pas à pas (principalement issues d’une combinaison des autres réponses). Cela fonctionne même sur des appareils non enracinés.

  1. Connectez votre appareil et lancez l'application en mode débogage.

  2. Vous voudrez peut-être utiliser adb -d Shell "run-as com.yourpackge.name ls /data/data/com.yourpackge.name/databases/" pour voir quel est le nom de fichier de la base de données.

Remarque:com.yourpackge.name est le nom de votre package d'application. Vous pouvez l'obtenir à partir du fichier manifeste.

  1. Copiez le fichier de base de données de votre dossier d’application sur votre carte SD.

    adb -d Shell "run-as com.yourpackge.name cat /data/data/com.yourpackge.name/databases/filename.sqlite > /sdcard/filename.sqlite"

Remarque: nomfichier.sqlite est le nom de votre base de données que vous avez utilisé lors de la création de la base de données.

  1. Tirez les fichiers de base de données sur votre machine:

    adb pull /sdcard/filename.sqlite

Cela copiera la base de données de la carte SD à l’endroit où se trouve votre BAD.

  1. Installez Firefox SQLite Manager: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/

  2. Ouvrez Firefox SQLite Manager (Outils-> SQLite Manager) et ouvrez votre fichier de base de données à partir de l'étape 3 ci-dessus.

  3. Prendre plaisir!

180
Andy Cochrane

Tiré de ici , vous pouvez essayer:

  1. Open Source de Facebook Stetho library

Dans build.gradle:

dependencies {
  // Stetho core
  compile 'com.facebook.stetho:stetho:1.5.0'        
  //If you want to add a network helper
  compile 'com.facebook.stetho:stetho-okhttp:1.5.0'
}

Initialisez la bibliothèque dans l'objet d'application:

Stetho.initializeWithDefaults(this);

Et vous pouvez voir votre base de données dans Chrome à partir de chrome://inspect 

  1. Une autre option est ce plugin (pas gratuit)
  2. Et le dernier est cette bibliothèque libre/open source pour voir le contenu de la base de données dans le navigateur https://github.com/amitshekhariitbhu/Android-Debug-Database
74
Yair Kukielka

Le meilleur moyen que j'ai trouvé jusqu'ici consiste à utiliser l'outil Android-Debug-Database.

Il est incroyablement simple à utiliser et à configurer. Ajoutez simplement la dépendance et connectez-vous à l'interface de la base de données du périphérique via Web. Pas besoin de rooter le téléphone ou d'ajouter des activités ou quoi que ce soit. Voici les étapes:

ÉTAPE 1

Ajoutez la dépendance suivante au fichier Gradle de votre application et exécutez l'application.

debugCompile 'com.amitshekhar.Android:debug-db:1.0.0'

ÉTAPE 2

Ouvrez votre navigateur et visitez l'adresse IP de votre téléphone sur le port 8080. L'URL devrait ressembler à ceci: http://YOUR_PHONE_IP_ADDRESS:8080. Vous serez présenté avec ce qui suit:

Remarque: vous pouvez également toujours obtenir l'URL d'adresse de débogage à partir de votre code en appelant la méthode DebugDB.getAddressLog();

 enter image description here

J'utilise actuellement Ping Tools pour obtenir l'adresse IP de mon téléphone, mais il existe de nombreuses alternatives.

ÉTAPE 3

C'est tout!


Plus de détails dans la documentation officielle: https://github.com/amitshekhariitbhu/Android-Debug-Database

53
Bob

Le meilleur moyen d'afficher et de gérer votre base de données d'applications Android est d'utiliser la bibliothèque DatabaseManager_For_Android .

C'est un fichier unique d'activité Java; ajoutez-le simplement à votre dossier source . Vous pouvez afficher les tables dans votre base de données d'applications, mettre à jour, supprimer, insérer des lignes dans votre table. Tout à l'intérieur de votre application.

Lorsque le développement est terminé, supprimez le fichier Java de votre dossier src. C'est tout.

Vous pouvez visionner la démonstration de 5 minutes, Gestionnaire de base de données pour la base de données Android SQLite.

53
sanath_p

Tu peux le faire:

  1. adb Shell
  2. cd /go/to/databases
  3. sqlite3 database.db
  4. Dans l'invite sqlite>, tapez .tables. Cela vous donnera toutes les tables du fichier database.db.
  5. select * from table1;
16
Deepu

Si vous utilisez un périphérique réel et qu'il n'est pas enraciné, il n'est pas possible de voir votre base de données dans FileExplorer car, pour des raisons de sécurité, ce dossier est verrouillé dans le système Android. Et si vous l'utilisez dans un émulateur, vous le trouverez dans FileExplorer,/data/data/le nom de votre package/bases de données/yourdatabse.db .

14
Abhijit Chakra

Essayez AndroidDBvieweR!

  • Pas besoin que votre appareil soit surélevé
  • Pas besoin d'importer le fichier de base de données de l'application
  • Peu de configurations et vous êtes prêt à partir!

 AndroidDBvieweR

7
CLOUGH

J'ai utilisé SQLite Database Browser pour voir le contenu de la base de données SQLite dans le développement Android. Vous devez d'abord extraire le fichier de base de données du périphérique, puis l'ouvrir dans le navigateur de base de données SQLite.

4
Andrew T.

Bien que cela ne visualise pas directement la base de données sur votre appareil, j'ai publié un simple script Shell permettant de transférer des bases de données sur votre ordinateur local:

https://github.com/Pixplicity/dbdump

Il exécute deux méthodes distinctes décrites ici:

  1. Tout d'abord, il essaie de rendre le fichier accessible aux autres utilisateurs et tente de l'extraire du périphérique.
  2. Si cela échoue, il diffuse le contenu du fichier sur le terminal vers la machine locale. Il effectue une astuce supplémentaire pour supprimer les caractères \r que certains périphériques transmettent au shell.

À partir de là, vous pouvez utiliser diverses applications CLI ou GUI SQLite, telles que sqlite3 ou sqlitebrowser, pour parcourir le contenu de la base de données.

4
Paul Lammertsma

step 1Copiez cette classe dans votre package

étape 2 placez le code suivant dans votre classe qui étend SQLiteOpenHelper.

 //-----------------for show databasae table----------------------------------------

public ArrayList<Cursor> getData(String Query)
{
    //get writable database
    SQLiteDatabase sqlDB =this.getWritableDatabase();
    String[] columns = new String[] { "mesage" };
    //an array list of cursor to save two cursors one has results from the query
    //other cursor stores error message if any errors are triggered
    ArrayList<Cursor> alc = new ArrayList<Cursor>(2);
    MatrixCursor Cursor2= new MatrixCursor(columns);
    alc.add(null);
    alc.add (null);


    try{
        String maxQuery = Query ;
        //execute the query results will be save in Cursor c
        Cursor c = sqlDB.rawQuery(maxQuery, null);

        //add value to cursor2
        Cursor2.addRow(new Object[] { "Success" });

        alc.set(1,Cursor2);
        if (null != c && c.getCount() > 0)
        {
            alc.set(0,c);
            c.moveToFirst();
            return alc ;
        }
        return alc;
    }
    catch(SQLException sqlEx)
    {
        Log.d("printing exception", sqlEx.getMessage());
        //if any exceptions are triggered save the error message to cursor an return the arraylist
        Cursor2.addRow(new Object[] { ""+sqlEx.getMessage() });
        alc.set(1,Cursor2);
        return alc;
    }
    catch(Exception ex)
    {
        Log.d("printing exception",ex.getMessage());
        //if any exceptions are triggered save the error message to cursor an return the arraylist
        Cursor2.addRow(new Object[] { ""+ex.getMessage() });
        alc.set(1,Cursor2);
        return alc;
    }
}

étape 3 s'inscrire au manifeste

<activity
        Android:name=".database.AndroidDatabaseManager"
        Android:screenOrientation="portrait"
        Android:theme="@style/AppTheme.NoActionBar"/>

étape 4

Intent i = new Intent(this, AndroidDatabaseManager.class);
startActivity(i);
3
Hardik Vasani

essayez facebook Stetho.

Stetho est un pont de débogage pour les applications Android, permettant d'utiliser les puissants outils de développement Chrome, etc.

https://github.com/facebook/stetho

3
Kai Wang

Suivez ces étapes 

1> Téléchargez le fichier * .jar à partir de ici .

2> Placez le fichier * .jar dans le dossier Eclipse/dropins/et redémarrez Eclipse.

3> Dans l'angle supérieur droit d'Eclipse, cliquez sur l'icône DDMS.

4> Sélectionnez l'émulateur approprié dans le panneau de gauche.

5 Dans l'onglet Explorateur de fichiers du panneau principal, accédez à /data/data/[YOUR.APP.NAMESPACE]/databases.

6> Sous l'icône DDMS, une nouvelle icône bleue indiquant qu'une base de données doit s'allumer lorsque vous sélectionnez votre base de données. Cliquez dessus et un onglet Questoid Sqlite Manager apparaîtra pour afficher vos données.

* Remarque: Si la base de données ne s'allume pas, c'est peut-être parce que votre base de données ne possède pas l'extension de fichier * .db. Assurez-vous que votre base de données s'appelle [DATABASE_NAME] .db

* Remarque: si vous souhaitez utiliser une base de données sans l'extension .db:

-Téléchargez ce Questoid SqLiteBrowser: Téléchargez ici .

-Décompressez et mettez-le dans Eclipse/dropins (pas des plugins).

-Vérifiez ceci pour plus d'informations Cliquez ici .

3
Arhat Baid

Cela fonctionne avec Android 6.0 (au moins les applications déboguables):

adb Shell "run-as your.package.name cp /data/data/your.package.name/databases/you-db-name  /sdcard/file_to_write"

Ensuite, vous pouvez simplement afficher la base de données avec aSQLiteManager par exemple.

2
lomza

J'espère que cela vous aide

Utilisation de Terminal First pointez sur l'emplacement où est situé andriod sdk 

eg: C:\Users\AppData\Local\Android\sdk\platform-tools>

puis vérifiez la liste des périphériques connectés à l'aide de

 adb devices

puis exécutez cette commande pour copier le fichier du périphérique sur votre système

adb -s YOUR_DEVICE_ID Shell run-as YOUR_PACKAGE_NAME chmod -R 777 /data/data/YOUR_PACKAGE_NAME/databases && adb -s YOUR_DEVICE_ID Shell "mkdir -p /sdcard/tempDB" && adb -s YOUR_DEVICE_ID Shell "cp -r /data/data/YOUR_PACKAGE_NAME/databases/ /sdcard/tempDB/." && adb -s YOUR_DEVICE_ID pull sdcard/tempDB/ && adb -s YOUR_DEVICE_ID Shell "rm -r /sdcard/tempDB/*"

Vous pouvez trouver le fichier de base de données dans ce chemin 

 Android\sdk\platform-tools\tempDB\databases
2
saeed

Vous pouvez essayer SQLiteOnWeb . Il gère votre base de données SQLite dans le navigateur.

2
NovemberEleven

Il existe _ le navigateur Android SQLite de TKlerx pour Eclipse, et il est entièrement fonctionnel aux côtés d'Android Studio. Je le recommanderai, car c'est extrêmement pratique. 

Pour l'installer sur Device Monitor, il suffit de placer le fichier JAR dans [Path to Android SDK folder]/sdk/tools/lib/monitor-[...]/plugins.

1
Henrique de Sousa

J'ai trouvé une bibliothèque très simple qui permet de parcourir sqlite db de l'application en chrome, voir

0
Mundroid

Le premier message ( https://stackoverflow.com/a/21151598/4244605 ) ne fonctionne pas pour moi. 

J'ai écrit mon propre script pour obtenir le fichier DB à partir du périphérique. Sans racine. Travailler bien.

  1. Copiez le script dans le répertoire avec adb (par exemple: ~/Android-sdk/platform-tools).
  2. L'appareil doit être connecté au PC.
  3. Utilisez ./getDB.sh -p <packageName> pour obtenir le nom des bases de données.

Utilisation: ./getDB.sh -p <packageName> -n <name of DB> -s <store in mobile device> pour obtenir le fichier DB dans ce répertoire (où le script est exécuté).

Je vous recommande de définir le nom de fichier de la base de données comme * .sqlite et de l'ouvrir avec l'addon Firefox: SQLite Manager.

(C'est long, quand j'ai écrit quelque chose dans Bash. Vous pouvez éditer ce code.)

#!/bin/sh
# Get DB from Android device.
#

Hoption=false
Poption=false
Noption=false
Soption=false
Parg=""
Narg=""
Sarg=""

#-----------------------FUNCTION--------------------------:
helpFunc(){ #help
echo "Get names of DB's files in your Android app.
Usage: ./getDB -h
       ./getDB -p packageName -n nameOfDB -s storagePath
Options:
   -h                                           Show help.
   -p packageName                               List of databases for package name.
   -p packageName -n nameOfDB -s storagePath    Save DB from device to this directory."
}


#--------------------------MAIN--------------------------:
while getopts 'p:n:s:h' options; do
    case $options in

        p) Poption=true
            Parg=$OPTARG;;

        n) Noption=true
            Narg=$OPTARG;;

        s) Soption=true
            Sarg=$OPTARG;;

        h) Hoption=true;;
    esac
done

#echo "-------------------------------------------------------
#Hoption: $Hoption
#Poption: $Poption
#Noption: $Noption
#Soption: $Soption
#Parg: $Parg
#Narg: $Narg
#Sarg: $Sarg
#-------------------------------------------------------"\\n
#echo $#    #count of params

if [ $Hoption = true ];then
    helpFunc
Elif [ $# -eq 2 -a $Poption = true ];then #list
    ./adb -d Shell run-as $Parg ls /data/data/$Parg/databases/
    exit 0
Elif [ $# -eq 6 -a $Poption = true -a $Noption = true -a $Soption = true ];then #get DB file
    #Change permissions
    ./adb Shell run-as $Parg chmod 777 /data/data/$Parg/databases/
    ./adb Shell run-as $Parg chmod 777 /data/data/$Parg/databases/$Narg
    #Copy
    ./adb Shell cp /data/data/$Parg/databases/$Narg $Sarg
    #Pull file to this machine
    ./adb pull $Sarg/$Narg
    exit 0
else
    echo "Wrong params or arguments. Use -h for help."
    exit 1;
fi

exit 0;
0
t0m

En utilisant File Explorer, vous pouvez localiser votre fichier de base de données comme ceci:

data-->data-->your.package.name-->databases--->yourdbfile.db

Ensuite, vous pouvez utiliser n’importe quel front SQLite pour explorer votre base de données. J'utilise l'addon Firefox SQLite Manager. C'est gentil, petit et rapide.

0
r4jiv007