Introducció
SQLite és una biblioteca de programari que proporciona un sistema de gestió de bases de dades relacional. És lleugera, autònoma i no necessita un servidor separat per funcionar, la qual cosa la fa ideal per a aplicacions mòbils. En aquest tema, aprendrem com utilitzar SQLite per emmagatzemar i gestionar dades en una aplicació Android.
Objectius
- Comprendre què és SQLite i per què és útil en el desenvolupament d'aplicacions Android.
- Aprendre a crear i gestionar una base de dades SQLite.
- Implementar operacions CRUD (Crear, Llegir, Actualitzar, Eliminar) en una base de dades SQLite.
Conceptes Clau
- SQLiteOpenHelper: Una classe auxiliar que facilita la creació i gestió de bases de dades.
- SQLiteDatabase: Una classe que proporciona mètodes per interactuar amb la base de dades.
- ContentValues: Una classe que emmagatzema parells clau-valor per utilitzar-los en operacions de base de dades.
Creació d'una Base de Dades SQLite
Pas 1: Crear una Classe que Extengui SQLiteOpenHelper
public class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; public MyDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String CREATE_TABLE = "CREATE TABLE my_table (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, " + "age INTEGER)"; db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS my_table"); onCreate(db); } }
Explicació del Codi
- DATABASE_NAME: El nom de la base de dades.
- DATABASE_VERSION: La versió de la base de dades. S'utilitza per gestionar actualitzacions de l'esquema.
- onCreate(): Es crida quan la base de dades es crea per primera vegada. Aquí definim l'estructura de la taula.
- onUpgrade(): Es crida quan la base de dades necessita ser actualitzada. Aquí gestionem els canvis d'esquema.
Operacions CRUD
Crear (Insertar Dades)
public void addRecord(String name, int age) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", name); values.put("age", age); db.insert("my_table", null, values); db.close(); }
Llegir (Recuperar Dades)
public List<String> getAllRecords() { List<String> records = new ArrayList<>(); SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery("SELECT * FROM my_table", null); if (cursor.moveToFirst()) { do { String record = "ID: " + cursor.getInt(0) + ", Name: " + cursor.getString(1) + ", Age: " + cursor.getInt(2); records.add(record); } while (cursor.moveToNext()); } cursor.close(); db.close(); return records; }
Actualitzar (Modificar Dades)
public void updateRecord(int id, String name, int age) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", name); values.put("age", age); db.update("my_table", values, "id = ?", new String[]{String.valueOf(id)}); db.close(); }
Eliminar (Esborrar Dades)
public void deleteRecord(int id) { SQLiteDatabase db = this.getWritableDatabase(); db.delete("my_table", "id = ?", new String[]{String.valueOf(id)}); db.close(); }
Exercicis Pràctics
Exercici 1: Crear una Base de Dades
- Crea una nova classe que extengui
SQLiteOpenHelper
. - Defineix una taula amb les columnes
id
,name
iage
. - Implementa els mètodes
onCreate()
ionUpgrade()
.
Exercici 2: Implementar Operacions CRUD
- Afegeix mètodes per inserir, llegir, actualitzar i eliminar registres a la teva classe de base de dades.
- Prova aquests mètodes en una activitat o fragment.
Solucions
Solució a l'Exercici 1
public class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; public MyDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String CREATE_TABLE = "CREATE TABLE my_table (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, " + "age INTEGER)"; db.execSQL(CREATE_TABLE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS my_table"); onCreate(db); } }
Solució a l'Exercici 2
public void addRecord(String name, int age) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", name); values.put("age", age); db.insert("my_table", null, values); db.close(); } public List<String> getAllRecords() { List<String> records = new ArrayList<>(); SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery("SELECT * FROM my_table", null); if (cursor.moveToFirst()) { do { String record = "ID: " + cursor.getInt(0) + ", Name: " + cursor.getString(1) + ", Age: " + cursor.getInt(2); records.add(record); } while (cursor.moveToNext()); } cursor.close(); db.close(); return records; } public void updateRecord(int id, String name, int age) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", name); values.put("age", age); db.update("my_table", values, "id = ?", new String[]{String.valueOf(id)}); db.close(); } public void deleteRecord(int id) { SQLiteDatabase db = this.getWritableDatabase(); db.delete("my_table", "id = ?", new String[]{String.valueOf(id)}); db.close(); }
Conclusió
En aquest tema, hem après com utilitzar SQLite per gestionar dades en una aplicació Android. Hem vist com crear una base de dades, definir la seva estructura i implementar operacions CRUD. Aquestes habilitats són fonamentals per a qualsevol desenvolupador d'Android que necessiti emmagatzemar i gestionar dades de manera eficient.
En el següent tema, explorarem com utilitzar Room, una biblioteca de persistència de dades que simplifica encara més la gestió de bases de dades en Android.
Curs d'Android Studio
Mòdul 1: Introducció a Android Studio
- Introducció a Android Studio
- Configuració d'Android Studio
- Comprensió de la Interfície d'Android Studio
- Creació del teu Primer Projecte Android
Mòdul 2: Desenvolupament Bàsic d'Android
- Comprensió de l'Estructura del Projecte Android
- Introducció als Dissenys XML
- Components Bàsics de la Interfície d'Usuari
- Introducció a les Activitats
- Executar la teva Aplicació en un Emulador
Mòdul 3: Desenvolupament Intermedi d'Android
- Introducció als Intents
- Treballar amb Fragments
- Gestió de l'Entrada de l'Usuari
- Ús de RecyclerView
- Xarxes en Android
Mòdul 4: Desenvolupament Avançat d'Android
- Persistència de Dades amb SQLite
- Ús de Room per a la Gestió de Bases de Dades
- Components Avançats de la Interfície d'Usuari
- Vistes Personalitzades i Canvas
- Treballar amb Tasques en Segon Pla
Mòdul 5: Desenvolupament Professional d'Android
- Implementació de l'Arquitectura MVVM
- Injecció de Dependències amb Dagger
- Proves Unitàries i Proves de la Interfície d'Usuari
- Publicació de la teva Aplicació a Google Play
- Optimització del Rendiment