Il Forum è consultabile solo in modalità lettura. Per domande o consigli iscriviti al nostro GRUPPO FACEBOOK / COMMUNITY cliccando qui

[GUIDA] [MEDIA] Gestione Database SQLite

Discussione in 'Development' iniziata da Crotan, 21 Lug 2015.

  1. Crotan

    Crotan Worker Droid

    Iscritto:
    1 Set 2013
    Messaggi:
    81
    "Mi Piace":
    56
    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.


    Codice:
    public class GestioneDb extends SQLiteOpenHelper {
    
        public final static String NOME_DATABASE = "com.mio.package";
        public final static int VERSIONE_DATABASE = 1;
        
        public GestioneDb(Context context) {
            super(context, NOME_DATABASE, null, VERSIONE_DATABASE);
            // TODO Auto-generated constructor stub
        }
    
    }

    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.


    Codice:
    @[URL="http://www.################/forum/member.php?u=567222"]Override[/URL]
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub
            String sql = "CREATE TABLE IF NOT EXISTS 'TabellaProva' ('Titolo' varchar(50), 'Testo' varchar(50));";
            db.execSql(sql);
        }

    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.


    Codice:
    public class Databaseio {
    
    SQLiteDatabase database;
    GestioneDb db;
    
    public Databaseio(Context context) {
    db = new GestioneDb(context);
    database = db.getWritableDatabase();
    }
    
    }

    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.


    Codice:
    public void inserisciValori(String titolo, String testo) {
            contentValues = new ContentValues();
            contentValues.put("Titolo", titolo);
            contentValues.put("Testo", testo);
            db.insert("TabellaProva", null, contentValues);
        }

    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().

    Codice:
    public void cancellaTabella(String tabella) {
            db.delete(tabella, null, null);
    }
    
    Eliminare un valore dal database
    Per eliminare un valore dal database basterà creare una semplice query che cancella il valore dal campo indicato.

    Codice:
       public void cancella(String tabella, String testo) {
            sql = "DELETE FROM "+tabella+" WHERE Testo = '"+testo+"';";
            db.execSQL(sql);
        }
    Documentazione ufficiale
     
    A simoscorpion piace questo elemento.