Author Topic: Ayuda con BBDD android  (Read 5761 times)

vvegs

  • Newbie
  • *
  • Posts: 9
  • Karma: 0
    • View Profile
Ayuda con BBDD android
« on: Julio 14, 2014, 11:55:33 pm »
Hola.
Estoy haciendo mi proyecto de fin de carrera y he creado una BBDD con Sqlite para mi app android.
El problema es que la aplicacion salta al intentar abrir la base de datos como solo lectura.
Si alguien pudiera echar una mano lo agradeceria muchisimo.
Son dos clases, una que define las funcuiones para la base datos y otra hace uso de ellas (Guia).

public class BaseDatos extends SQLiteOpenHelper{
   
   public BaseDatos (Context context){
      super(context, "BBDD", null, 1);         
   }

   @Override
   public void onCreate(SQLiteDatabase db){
      String n1 = ("SERGIO");
      String n2 = ("MARIA");
      String n3 = ("JOSE");
      String a1 = ("AAAAA");
      String a2 = ("AAAAA");
      String a3 = ("AAAAA");
      db.execSQL("CREATE TABLE guia (nombre TEXT, apellido TEXT)");
      db.execSQL("INSERT INTO guia VALUES ('"+n1+"', '"+a1+"')");
      db.execSQL("INSERT INTO guia VALUES ('"+n2+"', '"+a2+"')");
      db.execSQL("INSERT INTO guia VALUES ('"+n3+"', '"+a3+"')");
      db.execSQL("CREATE TABLE perfil (nombre TEXT, edad INTEGER, peso FLOAT, estatura FLOAT, calle TEXT, numero INTEGER, ciudad TEXT");
      db.close();
   }

public Vector<String> consultarguia (int cantidad){
      Vector<String> result = new Vector<String>();
      SQLiteDatabase db = getReadableDatabase();
      db.close();
      if (db != null){
            Cursor cursor = db.rawQuery ("SELECT nombre FROM guia LIMIT"+ cantidad, null);
            while(cursor.moveToNext()){
               result.add (cursor.getString(0));
            }
            cursor.close();
            db.close();
            return result;
      }
      else{
         return null;
      }
   }

public class Guia extends Activity {
    /** Called when the activity is first created. */
    @Override public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.guia);
       
        Button a, b, c;
        a = (Button) findViewById (R.id.bta);
        b = (Button) findViewById (R.id.btb);
        c = (Button) findViewById (R.id.btc);
       
        BaseDatos bd = new BaseDatos (this);
        Vector<String> v = new Vector<String>();
       
        v = bd.consultarguia(3);
        if (v != null){
           Toast.makeText(getApplicationContext(),"DATOS CORRECTOS",Toast.LENGTH_SHORT).show();
           a.setText(v.elementAt(0));
            b.setText(v.elementAt(1));
            c.setText(v.elementAt(2));
        }
    }

Si alguno se entretiene a leerlo todo y me lo soluciona os juro que le quiero

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Ayuda con BBDD android
« Reply #1 on: Julio 15, 2014, 04:22:24 am »
¿Haces un close justo después de obtener la base de datos?

Code: [Select]
SQLiteDatabase db = getReadableDatabase();
db.close();
....
// Por aquí la consulta

Se bueno.

vvegs

  • Newbie
  • *
  • Posts: 9
  • Karma: 0
    • View Profile
Re: Ayuda con BBDD android
« Reply #2 on: Julio 15, 2014, 06:54:00 am »
Eso lo tenia ahi para depurar xD.
Por saber si habia problemas para manejar el cursor o al abrir base datos.
La cuestion es que sin eso sigue dando problemas, creo que puede ser culpa del Vector
« Last Edit: Julio 15, 2014, 07:04:16 am by vvegs »

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Ayuda con BBDD android
« Reply #3 on: Julio 15, 2014, 11:30:34 am »
¿Y cual es el problema que da exactamente? ¿Alguna excepción?

Se bueno.

vvegs

  • Newbie
  • *
  • Posts: 9
  • Karma: 0
    • View Profile
Re: Ayuda con BBDD android
« Reply #4 on: Julio 15, 2014, 06:56:33 pm »
Ahora que he depurado más...
La aplicacion termina normalmente en el OnCreate de la clase Guia.
Lo malo es que unas veces es al obtener la ReadableDatabase y otras al intentar utilizar los datos del Vector en los botones.
Segun el debugger el vector retorna con todo null... :S
Es posible que tenga algun problema de memoria ?

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Ayuda con BBDD android
« Reply #5 on: Julio 15, 2014, 08:08:46 pm »
En el onCreate() de la clase BaseDatos no cierres la bd que te están pasando.

Se bueno.

vvegs

  • Newbie
  • *
  • Posts: 9
  • Karma: 0
    • View Profile
Re: Ayuda con BBDD android
« Reply #6 on: Julio 15, 2014, 08:58:26 pm »
Ok hecho gracias.  ;)
Aun asi sigue dando error en el mismo sitio... :-\

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Ayuda con BBDD android
« Reply #7 on: Julio 15, 2014, 09:28:51 pm »
Hola:

¿Te da fallo siempre? ¿Falla a veces sí a veces no? ¿Funciona la primera vez y falla luego?

Se bueno.


vvegs

  • Newbie
  • *
  • Posts: 9
  • Karma: 0
    • View Profile
Re: Ayuda con BBDD android
« Reply #8 on: Julio 15, 2014, 10:00:00 pm »
En este momento salta al intentar crear el objeto BaseDatos.
El asunto es que en otro momento ha saltado al intentar obtener la ReadableDatabase, y ayer era al manejar el vector porque recibía un vector vacío imagino.
Por eso pienso que puede ser un problema de memoria o algo.
Lamentablemente mi experiencia de Java se reduce a este proyecto , entonces no doy para mucho mas

vvegs

  • Newbie
  • *
  • Posts: 9
  • Karma: 0
    • View Profile
Re: Ayuda con BBDD android
« Reply #9 on: Julio 15, 2014, 10:49:53 pm »
La lectura que saco del debugger es.
"java.lang.IllegalArgumentException: Version must be >= 1, was 0"
Con respecto a la version de la BBDD imagino.
Si la cambio a 1 saca este
"android.database.sqlite.SQLiteException: Can't upgrade read-only database from version 0 to 1"

Por si a alguien más aqui le ha pasado ???

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Ayuda con BBDD android
« Reply #10 on: Julio 15, 2014, 10:55:43 pm »
Hola:

No creo que sea problema de memoria, la memoria suele saltar de otra forma (OutOfMemory o cosas así). Los problemas pueden ser dos (al menos que se me ocurra)

- Que te de errores a veces en un lado a veces en otro, posiblemente se deba a que estás tocando código y a veces tengas un fallo en un sitio, otras veces en otro.
- Sin tocar código, que a veces al obtener la readabledatabase te de null y otras veces no, puede ser porque tarde en estar disponible y la estés intentando usar antes de tiempo (o la hayas cerrado antes, por eso te pregunto si la primera vez funciona bien y luego no).

El error que mencionas ahora, seguro que es de jugar. Cuando llamas a  super(context, "BBDD", null, 1);, estás pasando cosas como la versión de tu base de datos (no de sql, sino de tu aplicación, qué tablas has creado, etc) y si es o no escribible. Si de una prueba a otra juegas con esos parámetros, te pueden pasar cosas como las que te están pasando, parece que tienes una versión 0 de la base de datos instalada, que es de solo lectura y que por eso no puedes actualizarla (android no puede actualizarla) a lo que tu llamas versión 1.

Deberias tratar de estabilizar una version y ver si siempre da el mismo fallo y siempre de la misma forma o no. Cuéntanos luego qué fallo te da, si siempre es igual, etc.

Se bueno.

vvegs

  • Newbie
  • *
  • Posts: 9
  • Karma: 0
    • View Profile
Re: Ayuda con BBDD android
« Reply #11 on: Julio 15, 2014, 11:02:36 pm »
Ok gracias, le dare unas vueltas entonces a ver si por lo que dices.
 :)

 

ey