Ubicación de la base de datos sqlite en el dispositivo

He creado una base de datos sqlite mediante programación con la forma predeterminada de extender SQLiteOpenHelper y sobrescribir onCreate() . De esta manera el db se crea sobre la marcha cuando sea necesario.

Me gustaría comprobar el contenido del archivo db en mi equipo OS X con un navegador sqlite. Conozco el nombre del archivo db, pero no lo encuentro en el dispositivo. He conectado al dispositivo a través de USB y miró con finder y terminal, pero no puedo encontrar el archivo db.

¿Cuál es la ubicación predeterminada de las bases de datos sqlite en un dispositivo Android?

15 Solutions collect form web for “Ubicación de la base de datos sqlite en el dispositivo”

Puede encontrar la base de datos creada, denominada <your-database-name>

en

 //data/data/<Your-Application-Package-Name>/databases/<your-database-name> 

Sáquelo con el explorador de archivos y cámbielo para que la extensión .db3 lo use en SQLiteExplorer

Utilice el explorador de archivos de DDMS para navegar al directorio del emulador.

Para esto, lo que hice fue

 File f=new File("/data/data/your.app.package/databases/your_db.db3"); FileInputStream fis=null; FileOutputStream fos=null; try { fis=new FileInputStream(f); fos=new FileOutputStream("/mnt/sdcard/db_dump.db"); while(true) { int i=fis.read(); if(i!=-1) {fos.write(i);} else {break;} } fos.flush(); Toast.makeText(this, "DB dump OK", Toast.LENGTH_LONG).show(); } catch(Exception e) { e.printStackTrace(); Toast.makeText(this, "DB dump ERROR", Toast.LENGTH_LONG).show(); } finally { try { fos.close(); fis.close(); } catch(IOException ioe) {} } 

Y para hacer esto, tu aplicación debe tener permiso para acceder a la tarjeta SD, agrega la siguiente configuración a tu manifest.xml

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

No es una manera brillante, pero funciona.

El Contexto contiene muchas funciones de ruta de acceso: Context.getXXXPath ()
Uno de ellos es android.content.Context.getDatabasePath (String dbname) que devuelve la ruta absoluta de una base de datos llamada dbname.

 Context ctx = this; // for Activity, or Service. Otherwise simply get the context. String dbname = "mydb.db"; Path dbpath = ctx.getDatabasePath(dbname); 

La ruta devuelta, en este caso, sería algo como:

 /data/data/com.me.myapp/databases/mydb.db 

Tenga en cuenta que esta ruta se genera automáticamente si se utiliza SQLiteOpenHelper para abrir el DB.

Si está hablando de dispositivo /data/data/<application-package-name> es inaccesible. Debes tener derechos de root …

Esta es una vieja pregunta, pero contestar puede ayudar a otros.

La ruta predeterminada en la que se guarda Android bases de datos no se puede acceder a dispositivos no enraizados. Por lo tanto, la forma más fácil de acceder al archivo de base de datos (sólo para los entornos de depuración) es modificar el constructor de la clase:

 public class MySQLiteOpenHelper extends SQLiteOpenHelper { MySQLiteOpenHelper(Context context) { super(context, "/mnt/sdcard/database_name.db", null, 0); } } 

Recuerde cambiar para entornos de producción con estas líneas:

 public class MySQLiteOpenHelper extends SQLiteOpenHelper { MySQLiteOpenHelper(Context context) { super(context, "database_name.db", null, 0); } } 

/data/data/packagename/databases/

es decir

/data/data/com.example.program/databases/

Una base de datos SQLite es sólo un archivo. Puede tomar ese archivo, moverlo e incluso copiarlo a otro sistema (por ejemplo, desde su teléfono a su estación de trabajo), y funcionará bien. Android almacena el archivo en el directorio /data/data/packagename/databases/ . Puede utilizar el adb command o la File Explorer view en Eclipse ( Window > Show View > Other... > Android > File Explorer ) para ver, mover o eliminar.

Bien esto podría ser tarde, pero va a ayudar. Puede acceder a la base de datos sin enraizar su dispositivo a través de adb

Inicie el adb mediante cmd y escriba los siguientes comandos

 -run-as com.your.package -shell@android:/data/data/com.your.package $ ls cache databases lib shared_prefs 

Ahora puedes abrir desde aquí.

Si el nombre de su db como un archivo sin dar una ruta de acceso, la forma más común de obtener su carpeta es como:

 final File dbFile = new File(getFilesDir().getParent()+"/databases/"+DBAdapter.DATABASE_NAME); 

Donde DBAdapter.DATABASE_NAME es sólo una String como "mydatabase.db".
Context.getFilesDir() devuelve la ruta de acceso de los archivos de la aplicación como: /data/data/<your.app.packagename>/files/ por eso necesita .getParent()+"/databases/" , para quitar "archivos" y agregar "Bases de datos" en su lugar.
BTW Eclipse le advertirá acerca de la cadena de datos "data / data /", pero no en este caso.

Se puede acceder a ella mediante el uso de shell de adb

Contenido del enlace anterior:

Tutorial: Cómo acceder a una base de datos de Android mediante una línea de comandos. Cuando comience a tratar con una base de datos en su programa, es realmente importante y útil poder acceder a ella directamente, fuera de su programa, para comprobar lo que acaba de hacer el programa y para depurar.

Y es importante también en Android.

Aquí es cómo hacer eso:

1) Inicie el emulador (o conecte su dispositivo real a su PC). Por lo general, lanzar uno de mi programa de Eclipse para esto. 2) Inicie un símbolo del sistema en el directorio de herramientas de Android. 3) tipo adb shell. Esto lanzará un shell unix en su emulador / dispositivo conectado. 4) vaya al directorio donde se encuentra su base de datos: cd data / data aquí tiene la lista de todas las aplicaciones en su dispositivo Vaya en su directorio de aplicaciones (cuidado, Unix es sensible a mayúsculas) cd com.alocaly.LetterGame y descender En su directorio de bases de datos: bases de datos de cd Aquí puede encontrar todas sus bases de datos. En mi caso, sólo hay una (ahora): SCORE_DB 5) Inicie sqlite en la base de datos que desea comprobar / cambiar: sqlite3 SCORE_DB A partir de aquí, puede comprobar qué tablas están presentes: .tables 6) ingrese cualquier instrucción SQL que desee : Seleccione * de Score;

Esto es bastante simple, pero cada vez que lo necesito, no sé dónde encontrarlo.

 By Default it stores to: String DATABASE_PATH = "/data/data/" + PACKAGE_NAME + "/databases/" + DATABASE_NAME; Where: String DATABASE_NAME = "your_dbname"; String PACKAGE_NAME = "com.example.your_app_name"; 

Compruebe si su base de datos está almacenada en Device Storage. Si es así, tiene que utilizar permiso en Manifest.xml:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

También puede comprobar si su IDE tiene una utilidad como la perspectiva DDMS de Eclipse que le permite navegar a través del directorio y / o copiar archivos desde y hacia el Emulador o un dispositivo con raíz.

Defina el nombre de la base de datos como:

 private static final String DATABASE_NAME = "/mnt/sdcard/hri_database.db"; 

Y puede ver su base de datos en:

 storage/sdcard0/yourdatabasename.db 

Si la aplicación crea una base de datos, esta base de datos se guarda por defecto en el directorio DATA/data/APP_NAME/databases/FILENAME.

Las partes del directorio anterior se construyen sobre la base de las siguientes reglas. DATA es la ruta que devuelve el método Environment.getDataDirectory (). APP_NAME es el nombre de tu aplicación. FILENAME es el nombre que especifica en el código de aplicación de la base de datos.

Clase pública MySQLiteOpenHelper extiende SQLiteOpenHelper {MySQLiteOpenHelper (Contexto contextual) {super (context, "/mnt/sdcard/database_name.db", null, 0); }}

No codifique "/ sdcard /"; Use Environment.getExternalStorageDirectory (). GetPath () en su lugar

  • Cómo insertar valor nulo en Sqlite con SQLiteStatement
  • La restricción de Android Room FOREIGN KEY falló
  • Modo offline de la aplicación android, sincronización local de la base de datos sqlite con la base de datos distante
  • "SELECT last_insert_rowid ()" devuelve siempre "0"
  • Android json analizar y almacenar en la base de datos
  • Limitar el número de filas devueltas desde sqlite
  • Enviar una base de datos a través de ftp - Obtener un archivo diferente
  • Estrategia para actualizar la aplicación de Android (con base de datos)
  • Java.lang.StringIndexOutOfBoundsException: index = 0 length = 0 en obtener la base de datos sqlite
  • ¿Cómo insertar datos en la base de datos SQLite en android?
  • Actualizar consulta sqlite - Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.