He creado una base de datos sqlite mediante programación con la forma predeterminada de ampliar SQLiteOpenHelper
y anular onCreate()
. De esta manera, la base de datos se crea sobre la marcha cuando es necesario.
Me gustaría verificar el contenido del archivo db en mi máquina OS X con un navegador sqlite. Sé el nombre del archivo db, pero no puedo encontrarlo en el dispositivo. Me conecté al dispositivo a través de USB y busqué con el buscador y la terminal, pero no puedo encontrar el archivo db.
¿Cuál es la ubicación predeterminada para una base de datos sqlite en un dispositivo Android?
Respuestas:
Puede encontrar su base de datos creada, llamada
<your-database-name>
en
Sáquelo usando el Explorador de archivos y cámbiele el nombre para que tenga la extensión .db3 para usarlo en SQLiteExplorer
Utilice el Explorador de archivos de DDMS para navegar al directorio del emulador.
fuente
700
. Necesita privilegios de root para verlo.Por esto lo que hice fue
Y para hacer esto, su aplicación debe tener permiso para acceder a la tarjeta SD, agregue la siguiente configuración a su manifest.xml
No es una forma brillante, pero funciona.
fuente
El contexto contiene muchas funciones de ruta: Context.getXXXPath ()
Una de ellas es android.content.Context.getDatabasePath (String dbname) que devuelve la ruta absoluta de una base de datos llamada dbname.
La ruta devuelta, en este caso, sería algo como:
Tenga en cuenta que esta ruta se genera automáticamente si usa SQLiteOpenHelper para abrir la base de datos.
fuente
Si estás hablando de un dispositivo real
/data/data/<application-package-name>
es inaccesible. Debe tener derechos de root ...fuente
sudo su
Esta es una vieja pregunta, pero responder puede ayudar a otros.
Ruta predeterminada donde Android guarda bases de datos no se puede acceder en dispositivos no rooteados. Entonces, la forma más fácil de acceder al archivo de la base de datos (solo para entornos de depuración) es modificar el constructor de la clase:
Recuerde cambiar para entornos de producción con estas líneas:
fuente
Failed to open database '/mnt/sdcard/itens'.
Logcat
/data/data/packagename/databases/
es decir
/data/data/com.example.program/databases/
fuente
Una base de datos SQLite es solo 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
/data/data/packagename/databases/
directorio. Puede usaradb command
oFile Explorer view
en Eclipse (Window > Show View > Other... > Android > File Explorer
) para verlo, moverlo o eliminarlo.fuente
bueno, esto podría ser tarde pero ayudará. Puede acceder a la base de datos sin rootear su dispositivo a través de adb
inicie el adb usando cmd y escriba los siguientes comandos
Ahora puedes abrir desde aquí.
fuente
Si nombra su db como un archivo sin dar una ruta, la forma más común de obtener su carpeta es como:
donde
DBAdapter.DATABASE_NAME
esString
como "mydatabase.db".Context.getFilesDir()
devuelve la ruta para los archivos de la aplicación como:/data/data/<your.app.packagename>/files/
por eso es necesario.getParent()+"/databases/"
, para eliminar "archivos" y agregar "bases de datos" en su lugar.Por cierto, Eclipse le advertirá sobre la cadena "data / data /" codificada, pero no en este caso.
fuente
Y verifique si su base de datos está almacenada en Device Storage. Si es así, debe usar el permiso en Manifest.xml:
fuente
Puede acceder a él usando adb shell cómo hacerlo
Contenido del enlace anterior:
fuente
Si su aplicación crea una base de datos, esta base de datos se guarda de forma predeterminada en el directorio
DATA/data/APP_NAME/databases/FILENAME.
Las partes del directorio anterior se construyen según las siguientes reglas. DATA es la ruta que devuelve el método Environment.getDataDirectory (). APP_NAME es el nombre de su aplicación. FILENAME es el nombre que especifica en el código de su aplicación para la base de datos.
fuente
También puede verificar si su IDE tiene una utilidad como la perspectiva DDMS de Eclipse que le permite navegar por el directorio y / o copiar archivos desde y hacia el emulador o un dispositivo rooteado.
fuente
Defina el nombre de su base de datos como:
Y puedes ver tu base de datos en:
fuente
No codifique "/ sdcard /"; use Environment.getExternalStorageDirectory (). getPath () en su lugar
fuente
No codifique la ruta como
//data/data/<Your-Application-Package-Name>/databases/<your-database-name>
. Bueno, funciona en la mayoría de los casos, pero este no funciona en dispositivos donde el dispositivo puede admitir múltiples usuarios. El camino puede ser como//data/user/10/<Your-Application-Package-Name>/databases/<your-database-name>
. Una posible solución a esto está usandocontext.getDatabasePath(<your-database-name>)
.fuente