Corso Base. Lezione 6. Maurizio Cozzetto, Francesco Sarasini



Documenti analoghi
Lezione 13 Content Provider

Programmazione Android A cura di Carlo Pelliccia. Lezione 12 Database

Android. Memorizzazione di dati

Sistemi Mobili e Wireless Android - Dati persistenti: SQLite

Corso di programmazione di sistemi mobile 1. Android. Persistenza dei dati

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

External Storage File pubblici

Corso Base. ActionSMS. Maurizio Cozzetto, Francesco Sarasini

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

MySQL Database Management System

MySQL Database Management System

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Preparazione. Introduzione a MySQL: costruzione di una base di dati e gestione degli accessi. Accesso all area condivisa. Avvio Server MySQL

SQLite DB. Programmazione di disposi8vi mobili - v Libreria da usare in un programma. hcps:// in android è installata

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Corso di Web Programming

The world s most advanced class on PostgreSQL o quasi! 4 Marzo 8 Aprile L'Antipasto 11 Marzo

Introduzione a MySQL

Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

SQL Server Introduzione all uso di SQL Server e utilizzo delle opzioni Olap. Dutto Riccardo - SQL Server 2005.

OSSIF WEB. Manuale query builder

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

Corso sul linguaggio SQL

Basi di Dati: Corso di laboratorio

Volumi di riferimento

User Tools: DataBase Manager

GERARCHIE RICORSIVE - SQL SERVER 2008

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Laboratorio di Basi di Dati e Web

La geolocalizzazione

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Access. P a r t e p r i m a

DBMS (Data Base Management System)

SQL Server BI Development Studio

PHP e Structured Query Language

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

Capitolo Sincronizzazione dei Dati

Corso Corso di di programmazione di di sistemi mobile 1 1. Android Laboratorio. Primo Progetto, Toast

Corso di Laboratorio di Basi di Dati

PHP E MYSQL CREAZIONE DI UN NUOVO DATABASE DAL PHPMYADMIN

Dispensa di database Access

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

Ciclo di vita delle aevità Android Mobile Programming Prof. R. De Prisco

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

Esercitazione PAM. (Php Apache MySQL)

Modulo 7. Programmazione avanzata in Android

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

MySQL Command Line Client: operazioni fondamentali

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

Esame di Stato Istituto Tecnico Industriale Soluzione della Seconda Prova Indirizzo: INFORMATICA Tema: INFORMATICA Anno Scolastico:

Form Editor. Dove NomeProfilo è personalizzabile.

Definizione di domini

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

Database Manager Guida utente DMAN-IT-01/09/10

Gestione Orario Lezioni: Schema del Database

Basi di Dati Esercitazione JDBC. Giugno 2007

SQL. Alcune note sulla definizione dei dati

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Lavorare con MySQL Parte Seconda.

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

JDBC versione base. Le classi/interfacce principali di JDBC

Accesso a basi di dati con ASP. Algoritmo per visualizzare un DB

Utilizzare il NetBeans GUI Builder. Dott. Ing. M. Banci, PhD

Tipi MULTISET: accesso

Structured Query Language parte 1

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Informatica per le discipline umanistiche 2 lezione 10

MODULO 5 ACCESS Basi di dati. Lezione 4

Sviluppare un DB step by step

I file di dati. Unità didattica D1 1

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Esercitazione su JDBC

Indice generale. Introduzione...xi. Gli autori...xv. Che cos è un server PostgreSQL...1

Esercitazione sulle libpq - libreria C per PostgreSQL

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

Corso Base. Lezione 7. Maurizio Cozzetto, Francesco Sarasini

Dati relazionali e XML

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Android. Anatomia di una applicazione

Lezione 8. Metadati, Viste e Trigger

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Uso delle basi di dati. Informazione e dato. Cos è un database. Tabelle. Esempi di database

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Gestione delle tabelle

Corso di Informatica

Introduzione. Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni aerei

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;

Esercitazione: Il DBMS MySQL

IBM Software Demos Tivoli Identity Manager e Tivoli Directory Integrator

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

SQL Server. SQL server e un RDBMS di tipo client/server che utilizza Transact-SQL per gestire la comunicazione fra un client e SQL Server

CUSTOMIZZAZIONE CALENDARIO CRM VTIGER 5.0.4

SQL (STRUCTURED QUERY LANGUAGE)

Uso dei data bases con PHP. Prof. Francesco Accaino Iis Altiero Spinelli Sesto Sa Giovanni

Transcript:

Corso Base Lezione 6 Maurizio Cozzetto, Francesco Sarasini

Database SQLite (1/2) Android provides full support for SQLite databases. Any databases you create will be accessible by name to any class in the application, but not outside the application.

Database SQLite (2/2) Bisogna estendere la classe SQLiteOpenHelper e sovrascrivere i metodi oncreate() e onupgrade()

Programmare SQLite (1/4) import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper;... public class MioDatabaseHelper extends SQLiteOpenHelper{ final static String DB_NAME = "nome_db"; final static int DB_VERSION = 1; public MioDatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); }... // continua

Programmare SQLite (2/4)... @Override public void oncreate(sqlitedatabase db) { // creazione delle tabelle } @Override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { // aggiornamento delle tabelle } } // fine classe MioDatabaseHelper

Programmare SQLite (3/4) // per creare le tabelle si usa execsql() String sql = ""; sql = "CREATE TABLE rubrica("; // id è incrementato automaticamente sql = sql + "id INTEGER PRIMARY KEY,"; sql = sql + "nome TEXT NOT NULL,"; sql = sql + "cognome TEXT NOT NULL,"; sql = sql + "telefono TEXT NOT NULL"; sql = sql + ")"; db.execsql(sql); // da inserire in oncreate()

Programmare SQLite (4/4) public class MiaActivity extends Activity { MioDatabaseHelper miodatabasehelper; } @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); miodatabasehelper = new MioDatabaseHelper(this); }...

Apertura del database // da qualche parte nell'activity SQLiteDatabase db = miodatabasehelper.getwriteabledatabase(); // oppure Apertura in lettura e scrittura SQLiteDatabase db = miodatabasehelper.getreadabledatabase(); Apertura in sola lettura

Inserimento di un contatto (1/2) // apertura in scrittura SQLiteDatabase db = miodatabasehelper.getwriteabledatabase(); // mappa dei valori da inserire ContentValues values = new ContentValues(); values.put("nome", "Maurizio"); values.put("cognome", "Cozzetto"); values.put("telefono", "123-123456789"); // continua... Caricamento del record nella mappa

Inserimento di un contatto (2/2) // il metodo ritorna l'id del record appena creato // oppure -1 se non è possibile creare il record long id = db.insert("rubrica", null, values); if (id == -1) { // errore! db.close(); return; } Scrittura del record // chiusura del database db.close();

Aggiornamento di un contatto (1/2) // apertura in scrittura SQLiteDatabase db = miodatabasehelper.getwriteabledatabase(); // mappa dei valori da inserire ContentValues values = new ContentValues(); // informazione da aggiornare values.put("telefono", "456-789012345"); // continua... Caricamento dei nuovi dati nella mappa

Aggiornamento di un contatto (2/2) // clausola where String whereclause = "nome = 'Mario' AND cognome = 'Rossi'"; // r è il numero di record aggiornati int r = db.update("rubrica",values,whereclause,null); if (r==0) { // errore! db.close(); return; } // chiusura del database db.close(); Registrazione dei nuovi dati

Cancellazione di un contatto (1/2) // apertura in scrittura SQLiteDatabase db = miodatabasehelper.getwriteabledatabase(); // clausola where whereclause = "id =?"; // valore di id String[] whereargs = {"1"}; // continua... Eventuali filtri

Cancellazione di un contatto (2/2) // cancellazione // r restituisce il numero di record cancellati int r = db.delete("rubrica", whereclause, whereargs); if (r==0) { // errore! db.close(); return; } Cancellazione del record // chiusura del database db.close();

Esecuzione di una query (1/2) // Esecuzione di query SQL SQLiteDatabase db = miodatabasehelper.getreadabledatabase(); String[] columns = {"id"}; String selection = "cognome =?"; String selectionargs = {"Rossi"}; String orderby = "id ASC"; L'esecuzione di una query restituisce un cursore Cursor cursor = db.query("rubrica",columns, selection, selectionargs,null, null, orderby); // continua...

Esecuzione di una query (2/2) while (cursor.movetonext()) { int id = cursor.getint(0); String nome = cursor.getstring(1); String cognome = cursor.getstring(2); String telefono = cursor.getstring(3); // fai qualcosa con i campi } Scorriamo il risultato della query mediante db.close(); Il cursore

Content Providers (1/7) Content providers store and retrieve data and make it accessible to all applications. They're the only way to share data across applications; there's no common storage area that all Android packages can access.... Android exposes several native databases using Content Providers.

Content Providers (2/7) Ogni tipo di contenuto è esposto mediante un URI della forma A. Prefisso standard che indica che il dato è controllato da un Content Provider B. La Authority Part cioè il Content Provider stesso C. Il percorso che il Content Provider usa per determinare quale tipo di dato è richiesto D. L'id del record specifico richiesto

Content Providers (3/7) You do not need to write the URIs of the content providers manually as they are stored as constant values in their respective content provider classes. content://com.android.contacts/contacts Uri dei contatti android.provider.contactscontract.contacts Package Contacts.CONTENT_URI Costante che restituisce la Uri dei contatti

Content Providers (4/7) Android dispone di diversi Content Provider built-in, quali le immagini, i contatti della rubrica, i bookmark del browser, le chiamate ricevute, i file multimediali e le impostazioni del device.

Content Providers (5/7) Browser Use the browser Content Provider to read or modify bookmarks, browser history, or web searches. CallLog View or update the call history, including both incoming and outgoing calls, together with missed calls and call details like caller ID and call durations. Settings You can access the device s preferences....

Content Providers (6/7) Per interagire con il Content Provider che eroga i contenuti, si usa il codice seguente: ContentResolver cr = getcontentresolver();

Content Providers (7/7) Gli oggetti ContentResolver permettono le interrogazioni attraverso il metodo query() o col metodo managedquery() nel caso di una Activity

Esecuzione di una query sulla Rubrica (1/4) // API 2 import android.provider.contactscontract.contacts; // istanzio un oggetto ContentResolver ContentResolver cr = this.getcontentresolver(); // la uri che identifica il tipo di contenuto Uri uri = Contacts.CONTENT_URI; // nomi delle colonne da includere nella risposta String[] projection = {Contacts.DISPLAY_NAME};

Esecuzione di una query sulla Rubrica (2/4) // è la clausola WHERE (null=tutte le righe disponibili) String selection = null; // lista degli argomenti della clausola WHERE String[] selectionargs = null; // è la clausola di ordinamento String sortorder = Contacts.DISPLAY_NAME + " ASC";

Esecuzione di una query sulla Rubrica (3/4) // ottengo un oggetto di tipo Cursor Cursor cursor = cr.query(uri, projection, selection, selectionargs, sortorder); // ciclo di lettura dei contatti while (cursor.movetonext()) { String displayname = cursor.getstring(0); // visualizza displayname } // chiusura del cursore cursor.close();

Esecuzione di una query sulla Rubrica (4/4) <manifest...>... <uses-permission android:name="android.permission.read_contacts"> </uses-permission> </manifest> AndroidManifest.xml

Inserimento di un contatto // ottengo un oggetto ContentResolver ContentResolver cr = this.getcontentresolver(); // definisco una mappa ContentValues values = new ContentValues(); // Uri relativo ai contatti Uri contacts = People.CONTENT_URI; // aggiungo il nome alla mappa values.put(people.name, "Paolo"); Scrittura del record // inserisco il nuovo contatto Uri uri = cr.insert(contacts, values);

Aggiornamento di un contatto // ottengo l'uri del contatto Uri phoneuri = Uri.withAppendedPath(uri, People.Phones.CONTENT_DIRECTORY); // inserisco il telefono Modifica del record values.clear(); values.put(people.phones.type, People.Phones.TYPE_MOBILE); values.put(people.phones.number, "1233214567"); cr.insert(phoneuri, values); // analogamente si procede per l'email

Cancellazione di un contatto To delete a single record, call ContentResolver.delete() with the URI of a specific row To delete multiple rows, call ContentResolver.delete() with the URI of the type of record to delete Da fare

Corso Base 5 minuti di pausa Maurizio Cozzetto, Francesco Sarasini