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

Documenti analoghi
DATABASE PER IL WEB. Programmazione Web 1

Corso Base. Lezione 6. Maurizio Cozzetto, Francesco Sarasini

Le Basi di Dati Attive

Sistemi di Elaborazione delle Informazioni

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

Laboratorio di Basi di Dati

ESERCITAZIONE: AZIENDA

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language)

A.A. 2018/2019. Esercitazione 11. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

A.A. 2018/2019. Esercitazione 12. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

External Storage File pubblici

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

Corso di PHP. Prerequisiti. 8.1 PHP e MySQL. Conoscenza MySQL Tecnica della programmazione

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1

Capitolo 5. Soluzione: Soluzione in C:

Basi di dati I 10 luglio 2017 Tempo a disposizione: un ora e 30 minuti.

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

PHP ESSENTIALS #10. By WI400 Team. : database e sql

Connessione con MySQL

IL MODELLO RELAZIONALE

Sistemi Mobili e Wireless Android - Dati persistenti: SQLite

Stringhe di caratteri

PL/SQL e PLpgSQL. Audiolezione 28b. Necessità. Soluzioni. Embedded SQL. Alfio Ferrara - Stefano Montanelli. Estensioni procedurali di SQL

Corso sul linguaggio SQL

Cap. 7 -Trigger e loro uso

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

PARTITIONING PARTITIONING. 27/11/08 /home/scotty/enrico/corso web/finale/architettura/partit page 1

Interrogazioni nidificate

Connessione con MySQL

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

σ data 15/12/2013 data 20/12/2014

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

Laboratorio di Basi di Dati

Python e Mysql. E' possibile interagire direttamente con un database mysql (ma anche con altri) utilizzando moduli appositi in python

Manuale SQL. Manuale SQL - 1 -

Operazioni scatenanti. Nozione ed uso. Sintassi. Esempio

Tabelle esempio: Impiegato/Dipartimento

Basi di Dati: Corso di laboratorio

2011 Politecnico di Torino 1

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

PROGETTAZIONE DI DATABASE Linguaggio SQL

Corso di. Basi di Dati I. 11. Esercitazioni in SQL: Altri esercizi

PRODOTTO CARTESIANO Caso Generale

Gestire il database attraverso Javascript. Antonio Gallo

SQL - Structured Query Language

Laboratorio di Progettazione Web

Elena Baralis 2007 Politecnico di Torino 1

Accesso alla base di dati. Linguaggi per basi di dati. SQL immerso in linguaggio ad alto livello. SQL, un linguaggio interattivo

Elena Baralis 2013 Politecnico di Torino 1

Interrogazioni nidificate

A. Veneziani Linguaggio SQL

Laboratorio di Sistemi Informativi

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

Corso di Basi di Dati A.A. 2015/2016

Database support Prerequisites Architecture Driver features Setup Stored procedures Where to use. Contents

Fondamenti di Informatica A. A / 1 9

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Laboratorio di Basi di Dati

Programmazione Android A cura di Carlo Pelliccia. Lezione 12 Database

Utilizzando per la connessione al database un driver di Tipo 1:

A.A. 2018/2019. Introduzione a SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Basi di Dati Corso di Laura in Informatica Umanistica

PROGETTAZIONE DI DATABASE

SQL: DDL, VI, Aggiornamenti e Viste

Soluzione esercitazione 01

Informatica Grafica. Basi di dati parte 2

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

Basi di Dati: Corso di laboratorio

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Basi di Dati Esercitazione JDBC

Linguaggio SQL: fondamenti

Tecnologie di Sviluppo per il Web

Informatica I Facoltà di Ingegneria

Basi di Dati Attive. Basi di Dati Attive

Esercitazione di lunedì - TUTTE LE MATRICOLE -

PHP i5 #3. By SIRI. : accesso adl DB2 IBMi

Basi di Dati. Esercitazione JDBC. Ing. Paolo Cappellari

Esercitazione 2 SQL 1 (installazione MySQL)

SQL: le funzioni di aggregazione

Metodi di una Collection

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Corso di Basi di Dati

Basi di Dati. Esercitazione JDBC 28/05/2007

Appunti su SQL. Query Language. Comando Select

SQL. Lezione 1. Docente: Alberto Belussi

Triggers. Antonella Poggi, Claudio Corona. Dipartimento di informatica e Sistemistica Università di Roma La Sapienza

Programmazione 2 - Marco Ronchetti. Fondamenti di Java. Fac.Scienze Università di Trento. Static

Aspetti avanzati nella definizione degli schemi DDL2 1

Istruzioni DCL di SQL. Pag. 119 par.5

Corso di Algoritmi e Strutture Dati con Laboratorio. The JCF(continua): L interfaccia Map

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

LABORATORIO di INFORMATICA

SQL - Sottointerrogazioni

Esempio di database relazionale con l utilizzo del prodotto MySQL

Transcript:

SQLite DB 2013/14 Programmazione di disposi8vi mobili - v1.1 1 SQLite3 Libreria da usare in un programma hcps://www.sqlite.org/ in android è installata Installare ed usare sulla shell Tante UI da NON usare J hcp://sqlitestudio.pl/ Programmazione Java per Disposi8vi Mobili 2 Programmazione Java per Disposi8vi Mobili 1

Database relazionali Da8 raccol8 in tabelle non ordinate: relazioni colonne: campi, acribu8, fields righe: tuple, records Utenti (CF, nome, cognome) CF nome cognome BNCFR... Franco Bianchi VRDGS... Giuseppe RSSMR... Mario Verdi Rossi Libri (ISBN, autore, titolo) ISBN autore titolo 111111111 Caroll Alice in W 22222222 Tanenbaum Reti di Calc 33333333 AA. VV. Lonely Plan 44444444 Hofstadter GEB-EGB Prestiti (utente, libro, dataprestito, datarestituzione) utente libro dataprestito datarestituzione RSSMR... 22222222 12/12/2012 - VRDGS... 44444444 01/10/2011 11/11/2011 2014-2015 Programmazione Web 3 Vincoli di integrità Evitano che vengano inserite informazioni "non possibili" Esistono da8 che sono sintavcamente correv ma non rappresentano informazioni possibili per l applicazione di interesse Vincoli di dominio 8po di dato ammesso per un campo Chiavi primarie Insieme di acribu8 che iden8ficano univocamente le tuple di una relazione Vincoli di tupla relazioni interne fra i da8 Vincoli di integrità referenziale Fanno riferimento a chiavi primarie su altre relazioni SoddisfaV se valore esiste nell'altra relazione 2014-2015 Programmazione Web 4 Programmazione Java per Disposi8vi Mobili 2

Vincoli di dominio Tipi di dato che uso per le diverse colonne Il codice fiscale ha il suo formato Utenti (CF, nome, cognome) CF nome cognome BNCFR... Franco Bianchi VRDGS... Giuseppe Verdi RSSMR... Mario Rossi Devono esistere Libri (ISBN, autore, titolo) ISBN autore titolo 111111111 Caroll Alice in W 22222222 Tanenbaum Reti di Calc 33333333 AA. VV. Lonely Plan 44444444 Hofstadter GEB-EGB Prestiti (utente, libro, dataprestito, datarestituzione) utente libro dataprestito datarestituzione RSSMR... 22222222 12/12/2012 - VRDGS... 44444444 01/10/2011 11/11/2011 2014-2015 Programmazione Web 5 Chiavi Primarie Insieme di acribu8 che iden8ficano univocamente le tuple di una relazione Almeno una per ogni relazione Possono essere definite su più acribu8 Se non esiste una chiave, va definita (es. valore incrementale) Utenti (CF, nome, cognome) CF nome cognome BNCFR... Franco Bianchi VRDGS... Giuseppe Verdi RSSMR... Mario Rossi Devono esistere Libri (ISBN, autore, titolo) ISBN autore titolo 111111111 Caroll Alice in W 22222222 Tanenbaum Reti di Calc 33333333 AA. VV. Lonely Plan 44444444 Hofstadter GEB-EGB Prestiti (utente, libro, dataprestito, datarestituzione) utente libro dataprestito datarestituzione RSSMR... 22222222 12/12/2012 - VRDGS... 44444444 01/10/2011 11/11/2011 2014-2015 Programmazione Web 6 Programmazione Java per Disposi8vi Mobili 3

Vincoli di tupla datapres8to < datares8tuzione Utenti (CF, nome, cognome) CF nome cognome BNCFR... Franco Bianchi VRDGS... Giuseppe Verdi RSSMR... Mario Rossi Devono esistere Libri (ISBN, autore, titolo) ISBN autore titolo 111111111 Caroll Alice in W 22222222 Tanenbaum Reti di Calc 33333333 AA. VV. Lonely Plan 44444444 Hofstadter GEB-EGB Prestiti (utente, libro, dataprestito, datarestituzione) utente libro dataprestito datarestituzione RSSMR... 22222222 12/12/2012 - VRDGS... 44444444 01/10/2011 11/11/2011 2014-2015 Programmazione Web 7 Vincoli di integrità referenziale Fanno riferimento a chiavi primarie su altre relazioni SoddisfaV se valore esiste nell'altra relazione Utenti (CF, nome, cognome) CF nome cognome BNCFR... Franco Bianchi VRDGS... Giuseppe Verdi RSSMR... Mario Rossi Devono esistere Libri (ISBN, autore, titolo) ISBN autore titolo 111111111 Caroll Alice in W 22222222 Tanenbaum Reti di Calc 33333333 AA. VV. Lonely Plan 44444444 Hofstadter GEB-EGB Prestiti (utente, libro, dataprestito, datarestituzione) utente libro dataprestito datarestituzione RSSMR... 22222222 12/12/2012 - VRDGS... 44444444 01/10/2011 11/11/2011 2014-2015 Programmazione Web 8 Programmazione Java per Disposi8vi Mobili 4

Esercizio comandi sql Programmazione Java per Disposi8vi Mobili 9 Programmazione Java per Disposi8vi Mobili 10 Programmazione Java per Disposi8vi Mobili 5

Database locale Le app possono creare un db locale per memorizzare i da8 Il db è SQLite libreria per ges8re un db in un file Path db /data/data/<your.package.name>/databases/<database- name>.db Programmazione Java per Disposi8vi Mobili 11 SQLiteDatabase android.database.sqlite.sqlitedatabase Apertura db ma anche da context Interfaccia db SQL raw execsql create update e delete rawquery retrive Metodi specifici insert, query, update, delete Programmazione Java per Disposi8vi Mobili 12 Programmazione Java per Disposi8vi Mobili 6

Apertura DB opendatabase(string path, SQLiteDatabase.CursorFactory factory, int flags, DatabaseErrorHandler errorhandler) This method only opens the exis8ng database with the appropriate flag mode. The common flags mode could be OPEN_READWRITE OPEN_READONLY opendatabase(string path, SQLiteDatabase.CursorFactory factory, int flags) It is similar to the above method as it also opens the exisi8ng database but it does not define any handler to handle the errors of databases openorcreatedatabase(string path, SQLiteDatabase.CursorFactory factory) It not only opens but create the datbase if it not exists. This method is equivalent to opendatabase method openorcreatedatabase(file file, SQLiteDatabase.CursorFactory factory) This method is similar to above method but it takes the File object as a path rather then a string. It is equavilent to file.getpath() Programmazione Java per Disposi8vi Mobili 13 execsql Usato per inserire da8 ma anche modificare il db o cancellare righe. "Execute a single SQL statement that is NOT a SELECT or any other SQL statement that returns data" mydatabase.execsql("create TABLE IF NOT EXISTS Uten8(nomeVARCHAR,passwordVARCHAR);"); mydatabase.execsql("insert INTO Uten8 VALUES('admin','admin');"); execsql(string sql) Programmazione Java per Disposi8vi Mobili 14 Programmazione Java per Disposi8vi Mobili 7

rowquery String q = "SELECT * FROM Uten8"; Cursor mcursor = mdb.rawquery(q, null); q = "SELECT * FROM Uten8 WHERE nome = 'admin'" ; mcursor = mdb.rawquery(q, null); q = "SELECT nome FROM Uten8 WHERE nome =? AND password =?" mcursor = mdb.rawquery(q, new String[] {"admin", "wrwerwer"); Programmazione Java per Disposi8vi Mobili 15 Cursor Iteratore su una tabella di valori Result Set Metodi cursor.movetofirst() cursor.movetonext() cursor.getstring(0) cursor.getint(1) Programmazione Java per Disposi8vi Mobili 16 Programmazione Java per Disposi8vi Mobili 8

esempio String q= "SELECT * FROM Uten8"; SQLiteDatabase db =... Cursor cursor = db.rawquery(q, null); if (cursor.movetofirst()) { do { int id = cursor.getint(0); String name cursor.getstring(1);... while (cursor.movetonext()); Programmazione Java per Disposi8vi Mobili 17 Metodi di cursor getcolumncount() This method return the total number of columns of the table. getcolumnindex(string columnname) This method returns the index number of a column by specifying the name of the column getcolumnname(int columnindex) This method returns the name of the column by specifying the index of the column getcolumnnames() This method returns the array of all the column names of the table. getcount() This method returns the total number of rows in the cursor getposi8on() This method returns the current posi8on of the cursor in the table isclosed() This method returns true if the cursor is closed and return false otherwise Programmazione Java per Disposi8vi Mobili 18 Programmazione Java per Disposi8vi Mobili 9

insert SQLiteDatabase db =... ContentValues contentvalues = new ContentValues(); contentvalues.put("nome","pier"); contentvalues.put("password","hksksj"); db.insert("uten8",null,contentvalues); Programmazione Java per Disposi8vi Mobili 19 Programmazione Java per Disposi8vi Mobili 20 Programmazione Java per Disposi8vi Mobili 10

SQLiteOpenHelper Classe di u8lità per ges8re DB Metodi oncreate(sqlitedatabase) onupgrade(sqlitedatabase, int, int) onopen(sqlitedatabase) - opzionale getreadabledatabase() Create and/or open a database. getwritabledatabase() Create and/or open a database that will be used for reading and wri8ng. Programmazione Java per Disposi8vi Mobili 21 SQLiteOpenHelper public class DBHelper extends SQLiteOpenHelper { public DBHelper(){ super(context,database_name,null,1); public void oncreate(sqlitedatabase db) {... public void onupgrade(sqlitedatabase database, int oldversion, int newversion) {... Programmazione Java per Disposi8vi Mobili 22 Programmazione Java per Disposi8vi Mobili 11

DBHelperSingleton public class DBHelperSingleton extends SQLiteOpenHelper { private sta8c DBHelperSingleton sinstance; private sta8c final String DATABASE_NAME = "database_name"; private sta8c final String DATABASE_TABLE = "table_name"; private sta8c final int DATABASE_VERSION = 1; public sta8c synchronized DBHelperSingleton getinstance(context context) { if (sinstance == null) { sinstance = new DBHelperSingleton(context.getApplica8onContext()); return sinstance; private DBHelperSingleton (Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION);... Programmazione Java per Disposi8vi Mobili 23 Programmazione Java per Disposi8vi Mobili 12