Terza lezioneandroid

2,860 views
2,757 views

Published on

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

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,860
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
106
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Terza lezioneandroid

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

×