Comment puis-je consulter la base de données SQLite sur un appareil Android? [dupliquer]

cette question a déjà une réponse ici:

  • Débogage de base de données sqlite sur l'appareil 15 réponses

j'ai un ensemble de données dans une base de données SQLite. J'ai besoin d'afficher la base de données sur un périphérique. Comment dois-je faire?

j'ai vérifié en mode ddms. Les données dans explorateur de fichier est vide.

112
demandé sur Alex P. 2013-10-05 10:03:09

20 réponses

Voici des instructions étape par étape (tirées principalement d'une combinaison des autres réponses). Cela fonctionne même sur des appareils qui ne sont pas ancrés.

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

  2. vous pouvez utiliser adb -d shell "run-as com.yourpackge.name ls /data/data/com.yourpackge.name/databases/" pour voir ce qu'est le nom de fichier de la base de données.

Avis: com.yourpackge.name est le nom de votre dossier de candidature. Vous pouvez l'obtenir à partir du Manifeste.

  1. Copiez le fichier de la 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"

Notice: nom du fichier.sqlite est le nom de votre base de données que vous avez utilisé lorsque vous avez créé la base de données

  1. Extraire les fichiers de base de données à votre machine:

    adb pull /sdcard/filename.sqlite

cela copiera la base de données à partir de la carte SD à l'endroit où votre CDA existe.

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

  2. ouvrir Firefox SQLite Manager (Tools->SQLite Manager) et ouvrir votre fichier de base de données à partir de l'étape 3 surtout.

  3. Profitez-en!

173
répondu Andy Cochrane 2016-05-26 12:45:58

tiré de ici , vous pouvez essayer:

  1. Facebook open source Stetho library

Dans la construction.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'
}

initialiser la bibliothèque dans l'objet application:

Stetho.initializeWithDefaults(this);

et vous pouvez voir votre base de données en Chrome de chrome://inspect

  1. une autre option est ce plugin (non gratuit)
  2. et la dernière 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
70
répondu Yair Kukielka 2017-09-15 16:09:56

la meilleure façon de visualiser et de gérer la base de données de votre application Android est d'utiliser la bibliothèque DatabaseManager_For_Android .

c'est un seul fichier D'activité Java; il suffit de l'ajouter à votre dossier source. Vous pouvez voir les tableaux dans votre base de données app, mettre à jour, supprimer, insérer des lignes à votre table. Tout à partir de l'intérieur de votre application.

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

vous pouvez visualiser la démo de 5 minutes, Gestionnaire de base de données pour la base de données SQLite Android .

52
répondu sanath_p 2016-05-26 12:48:47

le meilleur moyen que j'ai trouvé jusqu'à présent est d'utiliser L'outil de base de données Android-Debug.

son incroyablement simple d'utilisation et de configuration, il suffit d'ajouter la dépendance et de se connecter à l'interface de la base de données de l'appareil via le web. Pas besoin de root 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 lancez 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 doit ressembler à: http://YOUR_PHONE_IP_ADDRESS:8080 . Vous recevrez ce qui suit:

NOTE: Vous pouvez aussi toujours obtenir L'URL de l'adresse de débogage de votre code en appelant la méthode DebugDB.getAddressLog();

enter image description here

pour obtenir L'adresse IP de mon téléphone actuellement, on utilise des outils de Ping, mais il y a beaucoup d'alternatives.

étape 3

C'est ça!


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

46
répondu Bob 2018-05-26 10:57:30

si vous utilisez un appareil réel, et qu'il n'est pas enraciné, alors il n'est pas possible de voir votre base de données dans FileExplorer , parce que, 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/votre nom de paquet/bases de données/yourdatabse.db .

14
répondu Abhijit Chakra 2016-05-26 12:44:00

Vous pouvez faire ceci:

  1. adb shell
  2. cd /go/to/databases
  3. sqlite3 database.db
  4. Dans le sqlite> invite de commandes, tapez .tables . Cela vous donnera toutes les tables dans la base de données.le fichier db.
  5. select * from table1;
13
répondu Deepu 2016-08-16 19:34:57

Try AndroidDBvieweR !

  • pas besoin d'enraciner votre dispositif
  • pas besoin d'importer le fichier de base de données de la demande
  • peu de configurations et vous êtes bon à aller!

AndroidDBvieweR

7
répondu CLOUGH 2016-05-26 12:52:32

Si vous ne voulez pas utiliser

  1. bad
  2. bibliothèque de tiers ou
  3. Grad-dependency etc

et juste vouloir le fichier de base de données dans votre SDCard , c'est la solution.

copier la classe DatabaseUtil.Java dans votre projet

package com.util;

import android.content.Context;
import android.os.Environment;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;

/**
 * Shayan Rais (http://shanraisshan.com)
 * created on 8/17/2016
 */
public class DatabaseUtil {
    //You need to declare permission
    // <uses-permission     android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    //in your Manifest file in order to use this class

    //______________________________________________________________________________________________

    //todo -> rename the database according to your application
    final static String DATABASE_NAME = "MyDatabase.sqlite";
    //example WhatsApp :  /data/data/com.whatsapp/databases/msgstore.db
    final static String FOLDER_EXTERNAL_DIRECTORY = Environment.getExternalStorageDirectory() + "/shanraisshan";

    //______________________________________________________________________________________________
    public static void copyDatabaseToExtStg(Context ctx) {
        //external storage file
        File externalDirectory = new File(FOLDER_EXTERNAL_DIRECTORY);
        if(!externalDirectory.exists())

        .
        .

et simplement appeler copyDatabaseToExtStg () méthode de toute activité dans votre application


cela copiera le dossier de la base de données à l'emplacement sdcard / shanraisshan/your_database_file

Image shows MyDatabase.sqlite present in SD Card


pour d'autres explication détaillée cochez Android-Database-Viewer sur Github. https://github.com/shanraisshan/Android-Database-Viewer

6
répondu shanraisshan 2016-08-17 11:44:41

j'ai utilisé navigateur de base de données SQLite pour voir le contenu SQLite DB dans le développement Android. Vous devez tirer le fichier de base de données de l'appareil d'abord, puis l'ouvrir dans SQLite DB Browser.

4
répondu Andrew T. 2013-10-05 06:11:28

bien que cela ne visualise pas la base de données directement sur votre appareil, j'ai publié un simple script shell pour décharger les bases de données sur votre machine locale:

https://github.com/Pixplicity/dbdump

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

  1. tout D'abord, il tente de rendre le fichier accessible pour d'autres utilisateurs, et en essayant de le tirer de la appareil.
  2. si cela échoue, il transmet le contenu du fichier sur le terminal à la machine locale. Il exécute une astuce supplémentaire pour supprimer \r caractères que certains appareils sortent à l'enveloppe.

D'ici vous pouvez utiliser une variété d'applications CLI ou GUI SQLite, telles que sqlite3 ou sqlitebrowser , pour parcourir le contenu de la base de données.

4
répondu Paul Lammertsma 2015-04-08 19:42:42

suivre ces étapes

1 >télécharger le *.fichier jar à partir de ici .

2 >mets le *.jar file dans le dossier eclipse/ dropins / et redémarrez eclipse.

3 >en haut à droite de l'éclipse, cliquez sur l'icône DDMS.

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

5 dans L'onglet File Explorer du panneau principal, allez dans /data/data / [YOUR.APP.NAMESPACE] / bases de données.

6 >sous l'icône du SGDD, une nouvelle icône bleue d'une base de données devrait s'allumer lorsque vous sélectionnez votre base de données. Cliquez dessus et vous verrez un onglet Questoid Sqlite Manager s'ouvrir pour voir vos données.

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

* Note: Si vous voulez utiliser un DB sans .db-Extension:

- téléchargez ce Questoid SqLiteBrowser: télécharger ici .

- Décompressez et mettez-le dans eclipse/dropins (pas Plugins).

- Voir plus d'informations Cliquez ici .

3
répondu Arhat Baid 2014-11-06 12:57:36

essayez Stetho sur facebook.

Stetho est un pont de débogage pour les applications Android, permettant les puissants outils de développement Chrome et bien plus encore.

https://github.com/facebook/stetho

3
répondu Kai Wang 2016-07-27 14:52:40

étape 1 copier cette classe dans votre paquet

l'étape 2 mettez 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 registre du Manifeste 151980920"

<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
répondu Hardik Vasani 2017-05-26 07:21:05

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

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

alors vous pouvez simplement voir le DB avec aSQLiteManager par exemple.

2
répondu lomza 2016-02-18 07:07:44

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

2
répondu NovemberEleven 2016-05-26 12:53:40

Espère que cela vous aide à

en utilisant le Terminal First point votre emplacement où andriod sdk est loacté

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

vérifier ensuite la liste des dispositifs attachés en utilisant

 adb devices

et ensuite exécuter cette commande pour copier le fichier à partir du périphérique vers 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
répondu saeed 2016-10-20 15:11:47

il y a TKlerx Android SQLite browser for Eclipse , et il est entièrement fonctionnel avec Android Studio. Je le recommande, parce que c'est immensément pratique.

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

1
répondu Henrique de Sousa 2016-05-26 12:51:52

avec file explorer, vous pouvez localiser votre fichier de base de données comme ceci:

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

alors vous pouvez utiliser N'importe quel SQLite pour explorer votre base de données. J'utilise le Gestionnaire SQLite Firefox addon. C'est joli, petit et rapide.

0
répondu r4jiv007 2016-05-26 12:42:28

j'ai trouvé très simple bibliothèque stetho à parcourir sqlite db de l'application dans chrome, voir

0
répondu Mundroid 2016-11-18 11:28:55

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 de l'appareil. Sans racine. Travail sur OK.

  1. copier le script dans le répertoire avec adb (par exemple: ~/android-sdk/platform-tools ).
  2. dispositif doivent être connectés à L'ordinateur.
  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 (où le script est exécuté) répertoire.

je vous recommande de définir le nom de fichier de DB comme *.sqlite et l'ouvrir avec Firefox addon: SQLite Manager.

(c'est un long moment, quand j'ai écrit quelque chose en Bash. Vous pouvez modifier 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
répondu t0m 2017-05-23 12:10:43