terza lezioneandroid
DESCRIPTION
Programma che crea il database dei voti degli studenti; crea la tabella voti, inserisce i voti nella tabellaTRANSCRIPT
![Page 1: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/1.jpg)
Apr 13, 2023
Terza lezione Android
Silvano Natalizi
![Page 2: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/2.jpg)
Creare un terzo progetto android
lancia android.bat
android create project --target 3 --path ./Studente
--activity Studente --package com.database.tutorial
cd studente Android
Lancia un simulatore con api level 3
![Page 3: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/3.jpg)
Prova l’emulatore ant install
La prima voltra trova il dispositivo offline
Ripeti: ant install Controlla nell’emulatore che sia stata
installata l’applicazione Studente Lancia l’applicazione studente Per default viene creata l’applicazione
che saluta: “Hello World, Studente”
![Page 4: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/4.jpg)
Il nostro obiettivo
Creare un’applicazione con la quale ogni studente può memorizzare i propri voti.
![Page 5: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/5.jpg)
Che cosa occorre ?
Interfaccia grafica Modello dei dati con il database Controllore per la logica del business
![Page 6: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/6.jpg)
L’interfaccia grafica
![Page 7: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/7.jpg)
Il database studente
Tabella voto Con le colonne:
id nome data voto motivo materia prof
![Page 8: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/8.jpg)
Modificare il file main.xml
open il file studente/res/layout/main.xml Questo è quello che vedi:
![Page 9: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/9.jpg)
Modificalo al seguente modo:
![Page 10: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/10.jpg)
Ricompila e installa: ant install
![Page 11: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/11.jpg)
Organizziamo il database
Per memorizzare permanentemente i dati dei voti dello studente è necessario organizzare il database
Creare il database studente Creare la tabella voto con il comando:
create table voto (_id integer autoincrement, datavoto char(10), voto real, motivo text, materia varchar(50), prof varchar(50), nome varchar(50), primary key(_id));
Inserire i dati nella tabella con il comando: insert into voto (datavoto, voto, motivo, materia, prof, nome);
![Page 12: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/12.jpg)
Quali sono le istruzioni che android ci fornisce per gestire i database ?
Dobbiamo inserire i precedenti comandi all’interno di opportune istruzioni java
Per fare il programma all’interno del quale inserire i comandi del database, dobbiamo sapere quali metodi ci offre android
Ogni metodo appartiene ad una classe, pertanto dobbiamo sapere quali sono le classi interessate
![Page 13: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/13.jpg)
Il package android.database.sqlite
![Page 14: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/14.jpg)
Quale classe usiamo ?
SQLiteDatabase è la classe che ci interessa: Infatti, in particolare ha i metodi:
openOrCreateDatabase(…) // per creare/aprire un database execSQL(…) //per creare una tabella, inserire i dati,
modificarli, eliminarli
![Page 15: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/15.jpg)
openOrCreateDatabase(…)
![Page 16: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/16.jpg)
Come fare le istruzioni
private final String DB_NAME = “Studente.db";
SQLiteDatabase database = null;
try{ database = SQLiteDatabase.openOrCreateDatabase(DB_NAME,
CREATE_IF_NECESSARY, null);
} catch (SQLiteException e) {
e.printStackTrace();
}
![Page 17: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/17.jpg)
execSQL(…)
![Page 18: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/18.jpg)
Come scrivere l’istruzioni per execSQL()
database.execSQL("CREATE TABLE IF NOT EXISTS voto
(_id integer autoincrement, datavoto char(10), voto real, motivo text, materia varchar(50), prof varchar(50), nome varchar(50), primary key(_id));”);
![Page 19: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/19.jpg)
Proviamo la creazione
Per il momento limitiamoci a verificare la corretta creazione del database e della tabella voto.
Inseriamo le precedenti istruzioni nel programma controllore Studente.java
Apriamo con scite tale sorgente ed inseriamoci le seguenti istruzioni:
![Page 20: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/20.jpg)
Studente.java – 1 parte
![Page 21: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/21.jpg)
Studente.java – 2 parte
![Page 22: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/22.jpg)
Compilare e installare
ant install Dobbiamo verificare che è stato creato il database
Studente.db Dobbiamo verificare che è stata creata la tabella voto.
![Page 23: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/23.jpg)
Eseguire l’applicazione nell’emulatore
Studente è l’applicazione. Clicca su di essa per eseguirla:
![Page 24: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/24.jpg)
Si ottiene la form , ma non sappiamo se il database è stato creato correttamente
![Page 25: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/25.jpg)
Torna a menù e scegli Dev Tools
![Page 26: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/26.jpg)
Scegli Package Browser
![Page 27: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/27.jpg)
Scegli il nostro package
![Page 28: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/28.jpg)
Vediamo il percorso del database
/data/data/com.database.tutorial/databases/Studente.db
![Page 29: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/29.jpg)
Possiamo accedere al database
sqlite3 /data/data/com.database.tutorial/databases/Studente.db
e vediamo che la tabella voto è stata correttamente creata
![Page 30: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/30.jpg)
Adesso organizziamoci per l’inserimento dei dati nella tabella
All’inizio implementiamo l’operazione di inserimento direttamente all’interno del controllore, senza delegare tale operazione al modello, che fra l’altro ancora non abbiamo creato.
![Page 31: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/31.jpg)
Quando dobbiamo eseguire l’inserimento ?
Ogni qual volta l’utente preme il bottone “inserisci” !
Nel controllore Studente.java acquisiamo il bottone del xml layout ed associamogli la classe anonima di ascolto con il codice di inserimento.
![Page 32: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/32.jpg)
Le istruzioni di inserimento
String inserisci="Insert into voto (datavoto,voto,motivo,materia,prof,nome) values ('"+ datavoto+"',"+voto+",'"+motivo+"','"+materia+"','"+prof+"','"+nome+"');";
database.execSQl(inserisci);
![Page 33: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/33.jpg)
Inserisci dei dati e premi il bottone save
![Page 34: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/34.jpg)
Anatomia del metodo onClick(…) - 1
Le istruzioni 24-30 prelevano i valori digitati nelle caselle di testo identificate da R.id.nome e le assegnano alle variabili di tipo EditText. Perché findViewById(…) restituisce un oggetto di tipo View
![Page 35: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/35.jpg)
Anatomia del metodo onClick(…) - 2
Queste istruzioni trasformano i valori contenuti in EditText in stringhe e nel caso della 31 in numero intero.
![Page 36: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/36.jpg)
Anatomia del metodo onClick(…) - 3
Critica è la scrittura dell’istruzione 37-38 per preparare la stringa di inserimento dei dati. Osserva come ogni variabile che contiene i dati da inserire sia racchiusa tra una coppia di apostrofi, di doppie virgolette e di un doppio + .
![Page 37: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/37.jpg)
Compilare ed installare e digitare alcuni dati di prova
ant install
![Page 38: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/38.jpg)
Verifichiamo che i dati digitati siano effettivamente inseriti nel database
adb –s emulator-5554 shell sqlite3 /data/data/com.database.tutorial/databases/Studente.db select * from voto;
![Page 39: Terza lezioneandroid](https://reader035.vdocuments.mx/reader035/viewer/2022062706/557bec26d8b42a2b348b486c/html5/thumbnails/39.jpg)
The End
2. Ristrutturare il codice per inserire il modello e una classe di helper per il database
Come dobbiamo proseguire ?
1.inserire il codice per mostrare la lista di
tutti i voti per data, per materia
per mostrare la lista dei voti per materia per data
per mostrare la media dei voti per materia.