39
Jun 26, 2 022 Terza lezione Android Silvano Natalizi

Terza lezioneandroid

Embed Size (px)

DESCRIPTION

Programma che crea il database dei voti degli studenti; crea la tabella voti, inserisce i voti nella tabella

Citation preview

Page 1: Terza lezioneandroid

Apr 13, 2023

Terza lezione Android

Silvano Natalizi

Page 2: Terza lezioneandroid

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

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

Il nostro obiettivo

Creare un’applicazione con la quale ogni studente può memorizzare i propri voti.

Page 5: Terza lezioneandroid

Che cosa occorre ?

Interfaccia grafica Modello dei dati con il database Controllore per la logica del business

Page 6: Terza lezioneandroid

L’interfaccia grafica

Page 7: Terza lezioneandroid

Il database studente

Tabella voto Con le colonne:

id nome data voto motivo materia prof

Page 8: Terza lezioneandroid

Modificare il file main.xml

open il file studente/res/layout/main.xml Questo è quello che vedi:

Page 9: Terza lezioneandroid

Modificalo al seguente modo:

Page 10: Terza lezioneandroid

Ricompila e installa: ant install

Page 11: Terza lezioneandroid

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

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

Il package android.database.sqlite

Page 14: Terza lezioneandroid

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

openOrCreateDatabase(…)

Page 16: Terza lezioneandroid

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

execSQL(…)

Page 18: Terza lezioneandroid

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

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

Studente.java – 1 parte

Page 21: Terza lezioneandroid

Studente.java – 2 parte

Page 22: Terza lezioneandroid

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

Eseguire l’applicazione nell’emulatore

Studente è l’applicazione. Clicca su di essa per eseguirla:

Page 24: Terza lezioneandroid

Si ottiene la form , ma non sappiamo se il database è stato creato correttamente

Page 25: Terza lezioneandroid

Torna a menù e scegli Dev Tools

Page 26: Terza lezioneandroid

Scegli Package Browser

Page 27: Terza lezioneandroid

Scegli il nostro package

Page 28: Terza lezioneandroid

Vediamo il percorso del database

/data/data/com.database.tutorial/databases/Studente.db

Page 29: Terza lezioneandroid

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

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

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

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

Inserisci dei dati e premi il bottone save

Page 34: Terza lezioneandroid

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

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

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

Compilare ed installare e digitare alcuni dati di prova

ant install

Page 38: Terza lezioneandroid

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

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.