Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 16/08/13, 01:42:05
Array

[xs_avatar]
Bongiovi Bongiovi no está en línea
Miembro del foro
 
Fecha de registro: oct 2012
Localización: España
Mensajes: 186
Modelo de smartphone: Motorola Moto G , BQ Maxwell 2 Lite
Tu operador: Simyo
No puedo leer mi DataBase en Gingerbread

Esto me trae de cabeza

Tenog una base de datos en la carpeta Assets de mi app, funciona perfectamente en Android 4.0 , 4.1 y 4.2. Pero no en Froyo ni Gingerbread!!!!!

No encuentro solución por ningún lado, aquí dejo mi DataBaseHelper:

Código:
public class BaseDatosHelper extends SQLiteOpenHelper 
{	
	private static String DB_PATH = "/data/data/MiPaquete/databases/";
	private static String DB_NAME = "MiDB";
	private SQLiteDatabase myDataBase;
	private final Context myContext;
	 
	//Guarda una referencia al contexto para acceder a la carpeta assets de la aplicación y a los recursos.
	public BaseDatosHelper(Context context) 
	{		
	    super(context, DB_NAME, null, 1);
	    this.myContext = context;
	}
	 
	// Crea una base de datos vacía en el sistema y la sobreescribe con la que hemos puesto en Assets.
	public void crearDataBase() throws IOException
	{		
	    boolean dbExist = comprobarBaseDatos();
	 
	    if(dbExist)
	    {
	    }
	    else
	    {
	    	//Si no existe, creamos una nueva Base de datos en la carpeta por defecto de nuestra aplicación,
	        //de esta forma el Sistema nos permitirá sobreescribirla con la que tenemos en la carpeta Assets.
	        this.getReadableDatabase();
	        try 
	        {
	        	copiarBaseDatos();
	        }
	        catch (IOException e) 
	        {
	        	throw new Error("Error al copiar la Base de Datos");
	        }
	     }
	 }
	 
	 private boolean comprobarBaseDatos()
	 {
		 SQLiteDatabase checkDB = null;
	     try
	     {
	    	 String myPath = DB_PATH + DB_NAME;
	         checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
	     }
	     catch(SQLiteException e)
	     {
	    	 //No existe
	     }
	 
	     if(checkDB != null)
	     {
	    	 checkDB.close();
	     }
	 
	     return checkDB != null ? true : false;
	  }
	 
	  /*
	  Copia la base de datos desde la carpeta Assets sobre la base de datos vacía recién creada en la carpeta del sistema,
	  desde donde es accesible.
	  */
	  private void copiarBaseDatos() throws IOException
	  {
	 
		  //Abrimos la BBDD de la carpeta Assets como un InputStream
	      InputStream myInput = myContext.getAssets().open(DB_NAME);
	 
	      //Carpeta de destino (donde hemos creado la BBDD vacia)
	      String outFileName = DB_PATH + DB_NAME;
	 
	      //Abrimos la BBDD vacia como OutputStream
	      OutputStream myOutput = new FileOutputStream(outFileName);
	 
	      //Transfiere los Bytes entre el Stream de entrada y el de Salida
	      byte[] buffer = new byte[1024];
	      int length;
	      while ((length = myInput.read(buffer))>0)
	      {
	    	  myOutput.write(buffer, 0, length);
	      }
	 
	      //Cerramos los ficheros abiertos
	      myOutput.flush();
	      myOutput.close();
	      myInput.close();
	   }
	 
	   //Abre la base de datos	   
	   public void abrirBaseDatos() throws SQLException
	   {
		   String myPath = DB_PATH + DB_NAME;
	       myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);	 
	   }
	 
	   //Cierra la base de datos  
	   @Override
	   public synchronized void close() 
	   {
		   if(myDataBase != null)
			   myDataBase.close();
	 
	       super.close();
	   }
	 
	   @Override
	   public void onCreate(SQLiteDatabase db) 
	   {
		  
	   }
	 
	   @Override
	   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
	   {
		   
	   }
	 
	      
	   (Método para obtener una ArrayList al leer la DataBase)
	   	   	   
}
He probado a quitarle la extensión ".db" a la database, utilizar getAbsolutePath() en vez de hardcodear la ruta del archivo, nada. Que por debajo de 4.0 no funciona.

Ayuda!!

Aquí algo del LogCat:

08-16 00:35:34.145: I/SqliteDatabaseCpp(1595): sqlite returned: error code = 1, msg = no such column: locale, db=/data/data/MiPaquete/databases/tallas.db
08-16 00:35:34.145: E/SqliteDatabaseCpp(1595): SELECT locale FROM android_metadata failed
08-16 00:35:34.145: E/SQLiteDatabase(1595): Failed to open the database. closing it.
Responder Con Cita


Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 18:34:12 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /