¿Es necesario todo esto para implementar una BD SQLite?

  • Respuestas:0
Zoudan
  • Posts del Foro: 8

26 feb. 2015 21:51:42 vía Web

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_CLIENTES_MOVIL,KEY_CLIENTES_EMAIL,KEY_CLIENTES_CALLE,KEY_CLIENTES_CODPOST,KEY_CLIENTES_CIUDAD,KEY_CLIENTES_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

Contestar