Terza lezioneandroid

Post on 13-Jun-2015

2,442 views 0 download

description

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

transcript

Apr 13, 2023

Terza lezione Android

Silvano Natalizi

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

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”

Il nostro obiettivo

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

Che cosa occorre ?

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

L’interfaccia grafica

Il database studente

Tabella voto Con le colonne:

id nome data voto motivo materia prof

Modificare il file main.xml

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

Modificalo al seguente modo:

Ricompila e installa: ant install

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);

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

Il package android.database.sqlite

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

openOrCreateDatabase(…)

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

}

execSQL(…)

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));”);

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:

Studente.java – 1 parte

Studente.java – 2 parte

Compilare e installare

ant install Dobbiamo verificare che è stato creato il database

Studente.db Dobbiamo verificare che è stata creata la tabella voto.

Eseguire l’applicazione nell’emulatore

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

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

Torna a menù e scegli Dev Tools

Scegli Package Browser

Scegli il nostro package

Vediamo il percorso del database

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

Possiamo accedere al database

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

e vediamo che la tabella voto è stata correttamente creata

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.

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.

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);

Inserisci dei dati e premi il bottone save

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

Anatomia del metodo onClick(…) - 2

Queste istruzioni trasformano i valori contenuti in EditText in stringhe e nel caso della 31 in numero intero.

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 + .

Compilare ed installare e digitare alcuni dati di prova

ant install

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;

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.