Guida in aggiornamento e non ancora terminata!
Il Sistema di gestione di basi di dati o più semplicemente DBMS integrato nativamente in Android è il Database SQLite. In questa guida vedremo come utilizzarlo e manipolare i dati al suo interno.
Creazione e configurazione database
La prima cosa da fare è creare una classe che estende SQLiteOpenHelper (android.database.sqlite.SQLiteOpenHelper) che ci servirà per creare il DB ed eventualmente aggiornarlo. Il costruttore possiamo lasciarlo vuoto ma dobbiamo comunque mantenere il riferimento alla superclasse tramite il super(), passando come parametri il contesto, il nome del DB e la versione.
1
2public class GestioneDb extends SQLiteOpenHelper {
3
4public final static String NOME_DATABASE = "com.mio.package";
5public final static int VERSIONE_DATABASE = 1;
6
7public GestioneDb(Context context) {
8super(context, NOME_DATABASE, null, VERSIONE_DATABASE);
9// TODO Auto-generated constructor stub
10}
11
12}
13
Fatto questo occupiamoci del metodo onCreate() che verrà invocato quando il Database verrà creato per la prima volta ed è qui, quindi, che andremo a creare le varie tabelle che comporranno il nostro archivio dati, utilizzando la classe SQLiteDatabase ed il suo metodo execSql() che, come intuibile, non fa altro che eseguire la query passatagli come parametro.
81
2<a rel="nofollow" href="https://www.androidiani.com/forum/members/override.html" target="_blank">Override</a>
3public void onCreate(SQLiteDatabase db) {
4// TODO Auto-generated method stub
5String sql = "CREATE TABLE IF NOT EXISTS 'TabellaProva' ('Titolo' varchar(50), 'Testo' varchar(50));";
6db.execSql(sql);
7}
8
In questo modo, se non esiste, verrà creata una tabella di nome TabellaProva con due campi di tipo Varchar (che accetteranno massimo 50 caratteri) di nome Titolo e Testo. Eventuali modifiche al DB vanno fatte nel metodo onUpgrade().
Inserire dati all'interno del database
Creiamo un'altra classe che utilizzeremo per scrivere e leggere i contenuti dell'archivio. Nel costruttore di questa nuova classe istanziamo GestioneDb passando il Context, come richiesto dal costruttore e successivamente utilizzando la classe SQLiteDatabase rendiamo il database scrivibile.
131
2public class Databaseio {
3
4SQLiteDatabase database;
5GestioneDb db;
6
7public Databaseio(Context context) {
8db = new GestioneDb(context);
9database = db.getWritableDatabase();
10}
11
12}
13
Per inserire i dati basterà creare un metodo che tramite la classe ContentValues (una classe che permette di avere una mappa dei valori da inserire) fare l'insert.
81
2public void inserisciValori(String titolo, String testo) {
3contentValues = new ContentValues();
4contentValues.put("Titolo", titolo);
5contentValues.put("Testo", testo);
6db.insert("TabellaProva", null, contentValues);
7}
8
Come vedete nel metodo insert() bisogna specificare in quale tabella dobbiamo inserire i valori.
Eliminare una tabella
Per eliminare una tabella dovete usare il metodo delete().
51
2public void cancellaTabella(String tabella) {
3db.delete(tabella, null, null);
4}
5
Eliminare un valore dal database
Per eliminare un valore dal database basterà creare una semplice query che cancella il valore dal campo indicato.
61
2public void cancella(String tabella, String testo) {
3sql = "DELETE FROM "+tabella+" WHERE Testo = '"+testo+"';";
4db.execSQL(sql);
5}
6
Documentazione ufficiale