Android - Actualizacion basedatos sqlite

 
Vista:
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Actualizacion basedatos sqlite

Publicado por Francisco (358 intervenciones) el 31/05/2015 10:27:45
Hola compañeros

tengo una aplicacion en googleplay
y quiero actualizar la base de datos con una tabla mas ,recoger los datos que hay almacenados en esta
y volverlos a ingresar en la base de datos ya actualizada.
He cargado un cursor con todos los datos de una tabla.

1
2
3
4
5
6
7
8
9
10
11
basedatos usdbh = new basedatos(this, "Pastillero", null, 1);
SQLiteDatabase db_tablas=usdbh.getReadableDatabase();
 
cursor_alarmas = db_tablas.rawQuery("select   hora,minuto,dosis,codigo,Activada,nota,nombre,fecha,fecha_inicio,directorio from Alarmas", null);
cursor_citas=db_tablas.rawQuery("select nota,fecha,hora,minuto,Activada,directorio from citas",null);
cursor_notas=db_tablas.rawQuery("select nota,fecha from Notas",null);
cursor_pastillas=db_tablas.rawQuery("select pastillas,horas_tomas,fecha from pildora",null);
cursor_ajustes=db_tablas.rawQuery("select nombre,tomas,horarios,horas_alarma,version from ajustes",null);
 
//	      db_tablas.close();
insertar_cursores();


paso seguido en aumentado el valor de la base de datos version++ , con lo que se me borrara la base de datos
y se me creara la tabla que quiero añadir.
la base de datos se me ha actualizado y claro ,tosos los datos se me han borrado.

pero al recorrer el cursor no recoge los valoresde la base de datos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (cursor_alarmas.moveToFirst()) {
	do {
 
		int dato_horaalarma = cursor_alarmas.getInt(0);
			int dato_minutoalarma=cursor_alarmas.getInt(1);
			int dato_dosis=cursor_alarmas.getInt(2);
			int dato_codigo=cursor_alarmas.getInt(3);
			String dato_activada=cursor_alarmas.getString(4);
			String dato_nota=cursor_alarmas.getString(5);
			String dato_nombre=cursor_alarmas.getString(6);
			String dato_fecha=cursor_alarmas.getString(7);
			String dato_fechainicio=cursor_alarmas.getString(8);
			String dato_directorio=cursor_alarmas.getString(9);
 
			db_insertar.execSQL("insert into alarmas (hora,minuto,dosis,codigo,Activada,nota,nombre,fecha,fecha_inicio,directorio) values ("  + dato_horaalarma + ",'" + dato_minutoalarma +"',"+ dato_dosis +","+ dato_codigo + ",'" + dato_activada +"','" + dato_nota + "','"+ dato_nombre +"','"+ dato_fecha +"','"+ dato_fechainicio +"','"+ dato_directorio +"')");
 
	} while(cursor_alarmas.moveToNext());

se ve que la base de datos ya se ha borrado y ya no hay registros

como hago para almacenar estos datos de la base de datos en un cursor ,actualizar la base de datos con lo que se
borraran los datos
recorrer el cursor y volverlos a insertar con la base de datos ya actualizada
creo que se hace con un cursor o voy mal encanminado
Gracias por la ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 444
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Actualizacion basedatos sqlite

Publicado por juanki (253 intervenciones) el 01/06/2015 00:45:54
Hola

Para actualizar la base de datos, creo que debe hacerse en el método onUpgrade de tu clase que herede de SQLiteOpenHelper.
http://www.sgoliver.net/blog/bases-de-datos-en-android-i-primeros-pasos/

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Actualizacion basedatos sqlite

Publicado por Francisco (358 intervenciones) el 01/06/2015 10:35:34
vale gracias por el comentario ya he solucionado el problema
lo que yo queria hacer es actualizar la base de datos con una tabla mas ,pero al actualizarla se me borraban todos los
datos almacenadas en esta.
Antes de borrarla yo ,habia recogidos todos los datos de las tablas una por una,creyendo que en el cursor almacenaba
los datos,pero no.
al borrarla los datos ya no existe ,por lo que el cursor no puede leer los datos que ya no estan.
lo que hice es crear una copia de la base de datos con otro nombre cargar los datos en el cursor ,actualizar la primera
y cargar los datos de la base de datos a la original.

Demasiado lio
por lo que hice es crear una tabla mediante codigo y asi se me crea la tabla y se me conservan los datos antiguos


basedatos usdbh_actualiza = new basedatos(this, "Pastillero", null, 1);
SQLiteDatabase db_crear_tabla=usdbh_actualiza.getWritableDatabase();


if(db_crear_tabla != null){

db_crear_tabla.execSQL("create table pastilla_imagen(id integer primary key autoincrement,nombre text,hora int ,minuto int)");

db_crear_tabla.close();

}

Algun comentario ......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 444
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Actualizacion basedatos sqlite

Publicado por juanki (253 intervenciones) el 01/06/2015 17:13:50
Bueno, si te funciona, estupendo :)

Y en vez de crear una tabla temporal ¿no te vale guardar los datos en un array o lista y una vez has creado la base de datos nueva guardarlos? Así te ahorras crear y eliminar la tabla.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Actualizacion basedatos sqlite

Publicado por Francisco (358 intervenciones) el 01/06/2015 19:41:14
Si podria funcionar pero el problema es que si tengo 50 datos en la base de datos tendría que crear 50 arrays

Gracias por comentar se puede hacer de mil maneras pero hay que encontrar la manera mas facil de solucionar

db_crear_tabla.execSQL("create table pastilla_imagen(id integer primary key autoincrement,nombre text,hora int ,minuto int)");

el problema.Asi da gusto consultar dudas .

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar