estoy realmente luchando con el uso de la SqlLite en mi aplicación;SQLite Android ¿Dónde y cuándo inicializar SQLiteOpenHelper
He creado una clase de ayuda base de datos que se extiende desde SQLiteOpenHelper
public class DatabaseHelper extends SQLiteOpenHelper {
En el OnCreate estoy creando unos 6 mesas:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE myTestTable (Id INTEGER PRIMARY KEY , "
+ "info TEXT," +
+ "TopLeft TEXT")); <-- example insert
}
Cuando mi aplicación se inicia estoy al analizar algunos xml y ingresando los datos en la tabla, y he verificado la base de datos y todo está allí y mis tablas se crearon correctamente.
Cuando voy a llamar a los datos que se han ido! Tengo muchas consultas diferentes dentro de mi clase dbhelper y en cada actividad estoy iniciando la clase para poder acceder a mi función dentro de la clase.
Supongo que esta no es la manera de hacerlo, ya que ejecuta mi oncreate nuevamente y borra todas mis tablas (o al menos esto es cuando parece estar haciendo mientras verifico la base de datos después de intentar llamar datos de y que está vacío!
que estaba bajo la impresión de que el alcrear sólo funcionaba una vez, pero esto obviamente no es el caso, ya que parece ser la recreación de mi cada vez que DB y limpiando mis datos!
¿Dónde están destinados a inicializar la clase del dbhelper y ¿cómo dejar que recrear las tablas? necesito los datos a persistir incluso cuando la aplicación se cierra!
¡Estoy confundido!
Si esto no tiene sentido por favor las preguntas específicas sobre cómo puedo aclararlo!
ACTUALIZACIÓN
He descubierto que puedo agregar
CREATE TABLE IF NOT EXISTS
que para que la recreación de las tablas, pero todavía no parece estar bien llamando al alcrear cada vez ..
Buena pregunta y espero que alguien se le ocurre una respuesta, por lo que su "inserción" sin embargo, estás marcando la transacción exitosa antes de cerrar la base de datos? –
¿Decidir que su clase es estática soluciona el problema? –
@DAVE G Definitivamente, todos los datos van a la base de datos. ¿Tengo intención de cerrar la base de datos después de la inserción? Actualmente solo lo hace: \t SQLiteDatabase db = this.getWritableDatabase(); .... cotejando todos los datos y haciendo: db.insert ("TABLENAME", null, cv); ... y eso es el final? – Bex