2010-02-05 14 views
8

¿Es posible elegir una ubicación personalizada para el archivo de base de datos sqlite?Uso de un archivo personalizado para la base de datos sqlite de Android

Si es posible, quiero guardar el archivo de la base de datos en la tarjeta de memoria. Y si el usuario cambia de una tarjeta de memoria a la otra, quiero que mi aplicación use cualquier versión del archivo de base de datos disponible en la tarjeta.

Respuesta

12

Por defecto su base de datos se almacena en datos /data/your_package/bases de datos

Puede utilizar SQLiteDatabaseopenOrCreateDatabase donde se puede suministrar la ruta a la base de datos personalizada como su primer argumento.

+1

datos de Android documentación de almacenamiento (http://developer.android.com/guide/topics/data /data-storage.html#db) menciona que todas las bases de datos se almacenan en una carpeta predefinida. Pero la documentación API para openOrCreateDatabase no pone ninguna restricción en el nombre del archivo. Creo que la documentación es realmente confusa, pero esta podría ser la solución. –

+0

Sí, la documentación es muy deficiente, aunque esto responde a lo que necesita, creo que es mejor utilizar 'SQLiteOpenHelper' para crear la base de datos y luego copiar el archivo de la base de datos en su tarjeta de memoria. –

8

Se puede acceder a una base de datos almacenada en la tarjeta sd que mediante el uso de:

import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 

public class MyClass { 
    private SQLiteDatabase myDB = null; 

    // Constructor 
    public MyClass() { 
     try { 
      myDB = SQLiteDatabase.openDatabase(stPathToDB, null, SQLiteDatabase.NO_LOCALIZED_COLLATORS|SQLiteDatabase.OPEN_READONLY); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 

    // Destructor 
    public void finalize() { 
     myDB.close(); 
    } 
} 

NO_LOCALIZED_COLLATORS = para abrir la base de datos sin soporte para alzadoras localizadas.

Con el fin de obtener la ruta a su sdcard puede utilizar:

stPathToDB = android.os.Environment.getExternalStorageDirectory().toString()+"/dbase.sqlite" 

Rgds Layne

Cuestiones relacionadas