- Posts del Foro: 8
26 feb. 2015 21:51:42 vía Web
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
Contenido editorial recomendado
Con su consentimiento, aquí se cargan contenidos externos.
Al hacer clic en el botón anterior, acepta que se le muestren contenidos externos. En el proceso pueden transmitirse datos personales a terceros proveedores. Encontrará más información al respecto en nuestro Política de privacidad.