2012-03-21 10 views
19

Im nuevo en android y quiero crear una especie de CRUD con SQLite.Obtener la ruta de la base de datos

Tengo un public class DataBaseHelper el cual tiene un constructor:

public DataBaseHelper(Context context) 
{ 
    this.context = context; 
} 

y un captador de datebase:

public SQLiteDatabase getDataBase() { 
    if (dataBase == null) { 
     try { 
      dataBase = context.openOrCreateDatabase(DataBaseHelper.dbName, 
                Context.MODE_PRIVATE, null); 

      dataBase.execSQL("CREATE TABLE " + DataBaseHelper.accountTblName + " " + 
             "(ID integer PRIMARY KEY AUTOINCREMENT" + 
             ",name TEXT" + 
             ",address TEXT" + 
             ",password TEXT)"); 
      } 
      catch(Exception e) { 
       Log.e(context.toString(), e.getMessage()); 

       if (dataBase != null) { 
        dataBase.close(); 
       } 
      } 
    }  
    return dataBase; 
} 

Si comienzo a un programa por primera vez - todo parece estar bien. la base de datos es nula y la creo (con una tabla). Pero cuando reinicio, la base de datos de mi aplicación vuelve a ser nula y no se puede crear la tabla.

He decidido escribir una función checkDB, que intenta abrir una base de datos. Pero, ¿dónde puedo obtener un camino para ello? No quiero que esté "codificado".

¿O puedo estar haciendo algún tipo de antipatrón?

Respuesta

56

Puede obtener la ruta por context.getDatabasePath(DataBaseHelper.dbName)

+1

¿Da un camino de cuerda ?? Vine a saber que devuelve File. Cómo obtener una cadena? –

+4

@ Archie.bpgc 'context.getDatabasePath (DataBaseHelper.dbName) .toString;' – jmhend

+0

bien. Muchas gracias –

0

que necesitaba para acceder DBS para la aplicación también. Esto funcionó para mí:

String dbFile; 
String[] dbNames = getSherlockActivity().databaseList(); // or ContextWrapper 
for (int i = 0; i < dbNames.length; i++) { 
    dbFile = getSherlockActivity().getDatabasePath(dbNames[i]).toString(); 
    Log.i(LOG_TAG, dbFile); 
} 

Espero que ayude! :-)

1

para obtener la ruta de la base de datos SQLite

aquí estoy escribiendo dos maneras de conseguir el camino.

(1) usando método personalizado

public String getDbPath(Context context,String YourDbName) 
{ 
    return context.getDatabasePath(YourDbName).getAbsolutePath(); 
} 

(2) usando la clase de archivos

File path=context.getDatabasePath("YourDbName"); 
    String db_path=path.getAbsolutePath(); 
    Log.i("Path:",db_path); 

siquiera verá el código tanto ... entonces tanto el código es el mismo, El primero es el método abreviado para obtener la ruta de la base de datos, y ocupa el menos memoria en comparación con la segunda opción.

2

Puede utilizar el método getDatabasePath dentro del constructor de su ayudante:

public class MyDatabase extends SQLiteAssetHelper { 

    private static final String DATABASE_NAME = "wl.db"; 
    private static final int DATABASE_VERSION = 1; 
    public String databasePath = "";  

    public MyDatabase(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 

     databasePath = context.getDatabasePath("wl.db").getPath(); 
    } 
Cuestiones relacionadas