Android Studio - SQLite
E’ il Tool
E’ il DBMS (Il motore di Database)
SQLite 3
CARATTERISTICHE
E’ un DBMS compatto. E’ a File
Memorizza strutture dati, memorizzate all’interno di File di Testo.
Come dimensioni è contenitissimo
Transazioni (atomiche, coerenti, isolate, durature) come il DBMS standard.
Non ha bisogno di Setup o di installazioni
Supporta in pieno SQL Standard (funzionalità e operatori)
SQLite, ha caratteristiche di ottimizzazioni
API, sono semplici. Si usano 4 – 5 metodi di apertura ed esecuzione Query.
Intero Database memorizzato in un file
SQL non è un linguaggio completo, non permette di fare Cicli o di usare Algoritmi sui Dati.
Per far si, che SQL, faccia qualcosa di più avanzato, bisogna ospitarlo all’interno di un Linguaggio di Programmazione
SQLite ha i suoi driver e permette di riconoscere il formato dei Dati, provenienti dalla Lettura di query SQL. Permette di fare anche Cicli.
E’ ben documentato (SQLite). E’ anche Open Source (quindi abbiamo il sorgente)
Non ci sono dipendenze esterne. I driver sono già incluse nelle Librerie di Android Studio.
E’ cross-platform, è utilizzabile su tanti Linguaggi di Programmazione.
E’ possibile amministrarlo con Linee di Comando.
USO CONSIGLIATO SQLite
DB consigliato per la IOT (frequenza di dati è abbastanza elevata. Utilizzando i Sensori, anche le temperature del giorno, anche 3 volte)
Non è detto che la IoT abbia un flusso di dati costanti.
Dati Compatti, un record di 10 interi, float
E’ possibile usare un altro Motore di Database.
Se utilizzassimo DBMS Server, cambia poco. Cambiar la stringa di connessione.
LIMITI
Applicazioni Client – Server. Per scambi molto frequenti (ALTO Traffico, non va bene)
Dataset Molto Grandi (che vanno oltre i TeraByte). SQLite è limitato a 140 TB
Concorrenza: se i dati vengono da più fonti, più Utenti che stanno scrivendo tra Loro, ci possono essere problemi a livello di CRASH.
Motivo? Stiamo USANDO COME STRUTTURA DATI: UN FILE.
IL FILE è sequenziale. Possiamo Mapparlo come un Albero, un Grafo, ma il fatto di doverlo Mapparlo, quindi di Leggerlo, Mapparlo nei nodi. E’ un’operazione che va fatta in Run.
Database piccolo personale: SQLite, va bene!
SALVATAGGIO SU SQLite
I DATI DEVONO ESSERE STRUTTURATI.
DEVONO AVERE UNA DETERMINATA STRUTTURA → DEI TIPI
DEVONO ESSERE SALVATI IN TABELLE
API sono disponibili nel Package: android.database.sqlite
Non c’è bisogno di scaricare DLL o qualcosa del genere.
Per creare un NUOVO DATABASE, O.S. Android, consiglia una Sottoclasse di: SQLiteOpenHelper
Database Inspector: ci permette di collegarci al Database. E guardarci dentro. Questo Tool è in Android Studio
SQLiteOpenHelper è quella Classe che ci da l’interfaccia tra codice e quindi tra (Linguaggio di Programmazione) ed SQL
DDL (Data Definition Language), che permette di creare, modificare o eliminare gli oggetti in un Database
DML (Query) leggere, inserire, modificare o eliminare i dati in un Database
DATABASE RELAZIONALI
SQL: DDL e DML
LETTURA E SCRITTURA
per scrivere: getWritableDatabase()
per leggere: getReadableDatabase()
Entrambe restituiscono un oggetto SQLiteDatabase
ESECUZIONE QUERY
per eseguire le query, utilizzare il metodo query() che accetta diversi parametrizzazioni
Per interrogazioni più complesse:
SQLiteQueryBuilder che è sempre un oggetto, che permette di fare la Transazione sul Database.
SQLiteQueryBuilder, permette di NON fare la concatenazione della Stringa come testo, quindi utilizzando il +.
Utilizzare la Stringa come testo: problemi → SQL INJECTION per la sicurezza
SDK Android include uno strumento per database, sqlite3 per navigare il contenuto delle tabelle, eseguire comandi SQL ed altre funzioni.
SCHEMA E CONTRACT
LO SCHEMA è la dichiarazione formale di come i dati sono organizzati. IL DDL. Lo SCHEMA riflette le dichiarazioni SQL usate per la creazione del database.
CONTRACT CLASS: la CLASSE di oggetti, di costanti, che definisce i nomi: le tabelle, le colonne, nella creazione di un Content Provider che si deve interfacciare con il database.
PATH STORAGE DB
I Dati sono memorizzati nell’area interna dell’APP, quindi al sicuro.
Un utile set di API è disponibile nella Classe SQLiteOpenHelper
per usare SQLiteOpenHelper si crea una sua sottoclasse, che fa l’override di:
onCreate(), onUpdate() e onOpen()
sul Database!
C’è il Cursore che esegue la query. Il Cursore viene chiamato prima di leggere i dati e poi può scorrere i risultati.