Ver Mensaje Individual
  #1  
Viejo 26/02/15, 21:54:01
Array

[xs_avatar]
superx335 superx335 no está en línea
Miembro del foro
 
Fecha de registro: abr 2011
Mensajes: 137
Modelo de smartphone: LG G4 / LG Flex 2
Tu operador: ONO
Lightbulb ¿Es necesario todo esto para implementar una BD SQLite?

Buenas!

He estado haciendo mi primera base de datos SQLite y la verdad es que, aunque muchas cosas me parecen lógicas, otras me parecen demasiado engorrosas, y quizá es que no lo hago bien.

He creado una base de datos con una tabla de prueba, con un par de campos solamente, y para ello he extendido la clase SQLiteOpenHelper, implementando el onCreate y onUpgrade, y a continuación he definido los CRUD (añadir datos a la tabla, actualizarlos, eliminarlos, obtener todos los registros...).

El problema es que ahora que quiero hacer la base de datos real, he creado 4 tablas con muchos campos, y por poner el ejemplo de una de ellas, hago, en el onCreate:

String CREATE_CLIENTES_TABLE = "CREATE TABLE clientes ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"nombre TEXT, " +
"nombre_comercial TEXT, " +
"nif TEXT, " +
"telf INTEGER, " +
"movil INTEGER, " +
"email TEXT, " +
"calle TEXT, " +
"codpost INTEGER, " +
"ciudad TEXT, " +
"forma_pago TEXT )";
db.execSQL(CREATE_CLIENTES_TABLE);


Luego, para las operaciones CRUD:

private static final String TABLE_CLIENTES = "clientes";

Ahora las columnas

private static final String KEY_CLIENTES_ID = "id";
private static final String KEY_CLIENTES_NOMBRE = "nombre";
private static final String KEY_CLIENTES_NOMCOM = "nombre_comercial";
private static final String KEY_CLIENTES_NIF = "nif";
private static final String KEY_CLIENTES_TELF = "telf";
private static final String KEY_CLIENTES_MOVIL = "movil";
private static final String KEY_CLIENTES_EMAIL = "email";
private static final String KEY_CLIENTES_CALLE = "calle";
private static final String KEY_CLIENTES_CODPOST = "codpost";
private static final String KEY_CLIENTES_CIUDAD = "ciudad";
private static final String KEY_CLIENTES_FORMPAG = "forma_pago";
private static final String[] CLIENTES_COLUMNS = {KEY_CLIENTES_ID,KEY_CLIENTES_NOMBRE,KEY_CLIENTES_ NOMCOM,KEY_CLIENTES_NIF,KEY_CLIENTES_TELF,KEY_CLIE NTES_MOVIL,KEY_CLIENTES_EMAIL,KEY_CLIENTES_CALLE,K EY_CLIENTES_CODPOST,KEY_CLIENTES_CIUDAD,KEY_CLIENT ES_FORMPAG};

Y luego, uno a uno, los métodos, por ejemplo (este metodo no coincide con Clientes, es a modo de ejemplo):

public List<Parte> getAllPartes() {
List<Parte> partes = new LinkedList<Parte>();

//1. Build the query
String query = "SELECT * FROM " + TABLE_PARTES;

//2. Get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);

//3. Go over each row, build parte and add it to list
Parte parte = null;
if(cursor.moveToFirst()){
do{
parte = new Parte(null, null, null);
parte.setId(Integer.parseInt(cursor.getString(0))) ;
parte.setNombre(cursor.getString(1));
parte.setApellido(cursor.getString(2));
parte.setMoreInfo(cursor.getString(3));

//Add parte to partes
partes.add(parte);
} while(cursor.moveToNext());
}

Log.d("getAllPartes()", partes.toString());

//Return partes
return partes;
}

Si ahora tengo que hacer todo esto para la siguiente tabla... no es un proceso MUY precario? o es así y ya está? la verdad es que sería una vez y ya, pero aún así me parece raro.

Un poquito de luz, por favor!

Gracias de antemano
Responder Con Cita