2009-12-23 20 views
25

Hasta ahora hemos desarrollado aplicaciones en Android que crean una base de datos en tiempo de ejecución. Nos gusta saber cómo podemos acceder a un archivo de base de datos/sqlite preconstruido o existente en nuestra aplicación de Android. Proporcione los detalles¿Cómo acceder a una base de datos sqlite existente en Android?

+0

@Yaqub Ahmad Gracias por la edición para que quede más claro. –

+0

Querrá probar [android sqlite asset helper] (https://github.com/jgilfelt/android-sqlite-asset-helper). Lo hace un pedazo de pastel. – craned

Respuesta

32

Eche un vistazo a la documentación para android.database.sqlite.SQLiteDatabase.

En particular, hay un comando openDatabase() que accederá a una base de datos dada una ruta de archivo.

SQLiteDatabase db = SQLiteDatabase.openDatabase(path, null, 0); 

sólo tiene que especificar la ruta de acceso a su base de datos como la variable path, y debería funcionar.

+1

Supongamos que tengo mi archivo db en mi carpeta de activos, ¿qué ruta daré a la variable de ruta? –

+5

Consulte esta otra pregunta relacionada: http://stackoverflow.com/questions/513084/how-to-ship-an-android-application-with-a-database En resumen, no puede hacerlo directamente. Debe copiar los datos de su APK y en un nuevo archivo en/data, luego puede abrirlos directamente. Esta publicación de blog tiene más información: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ –

0

Primero copia tu SDCARD y dale su ruta en la variable "DBNAME" en el siguiente ejemplo. será algo así como "/sdcard/persons.db" si lo está tirando directamente a la tarjeta sd.

+0

¿Podría expandirse? No está del todo claro para mí cómo esto resuelve el problema. El enlace en la primera versión de su respuesta también está roto, ¿podría solucionarlo? – JonasCz

3

He seguido el mismo camino y encontró a dos cuestiones:

  1. incluir el campo _id en cualquier mesa de crear y asegúrese de que es parte de las columnas para volver al consultar cualquier tabla.
  2. Es posible que se produzca un error como Error al abrir la base de datos. cerrando it.. Esto se debe a que estamos copiando la base de datos de un archivo existente en lugar de crear tablas sobre un archivo db creado por la API de android sqlite , y es posible que la tabla android_metadata no exista. Para crearlo basta con ejecutar la siguiente consulta en su base de datos:

    CREATE TABLE android_metadata (locale TEXT);

    Y añadir el local correspondiente, por ejemplo en_US

+0

¿Puedo ejecutar ese SQL en la base de datos SQLite existente o debo ejecutarlo en la base de datos creada al copiar datos de la base de datos existente en/assets /? – marienke

+0

Debe ejecutarse en la base de datos existente en la carpeta "assets" o una vez copiada en la base de datos de la aplicación, pero creo que es más fácil tener la tabla en la base de datos antes de copiar – gantzer89

0

Úsala para acceder a la base de datos de aplicación:

Context context = getApplicationContext(); 
context.getDatabasePath(DataBaseHelper.database_Name); 
Cuestiones relacionadas