Unità didattica 2 - Dipartimento di Matematica e Informatica

Scuola Interuniversitaria Siciliana di Specializzazione
per l’Insegnamento Secondario
Classe di Concorso 42/A
Francesca Platania
Modulo Didattico:
Database nel Web
Docente
Prof. D. Cantone
Database nel Web
Il modulo, pensato per una quinta classe
Indirizzo Informatico, ha lo scopo di presentare
gli strumenti per la connessione e l’utilizzo dei
database relazionali mediante java server page
(JSP).
Composizione del modulo
Unità didattica 1 Le Applet
Unità didattica 2 La connessione ai Database
Unità didattica 3 Le Servlet
Unità didattica 2
La connessione ai Database
Prerequisiti
Gli studenti dovranno dimostrare di avere:
Conoscenze sicure del linguaggio Java
Conoscenze
relazionali
teoriche
di
base
Uso operativo del linguaggio SQL
sui
database
Obiettivi
Al termine di questa UD la classe sarà in grado di:
Costruire applicazioni Java per la connessione e
l’accesso ad un database.
Costruire applet per le interrogazioni ad un
database.
Contenuti
Richiami sui database e sul linguaggio SQL
Concetto di driver per la connessione e l’accesso ai
database
Caratteristiche di JDBC
Applicazioni Java per operazioni di manipolazione
Esecuzione di interrogazioni in SQL con e senza
parametri
Accedere al database tramite le applet
Metodologie
LEZIONE FRONTALE
LEZIONE DIALOGATA
ESERCITAZIONI in LABORATORIO su alcuni Progetti
Spazi
AULA
LABORATORIO
AZIENDA
Strumenti
LIBRO DI TESTO ED APPUNTI
COMPUTER
LAVAGNA LUMINOSA
Verifiche
Le verifiche sono periodiche e costanti, tese alla
valutazione del grado di apprendimento della classe.
E verranno effettuate a fine argomento a titolo
riepilogativo.
Esse verranno effettuate con:
Colloqui individuali
Interventi di vario genere
Questionari e Test
Prove di laboratorio
Valutazione
La valutazione sarà:
Sia di tipo formativo e quindi in relazione all’applicazione,
all’impegno, all’attenzione e al metodo di lavoro che ogni
studente avrà mostrato durante l’attività didattica
Sia di tipo sommativo, ricavata dalla misurazione delle
varie prove in cui gli studenti dovranno dimostrare di:
avere acquisito conoscenze e informazioni circa i contenuti
avere maturato abilità e competenze specifiche alla disciplina
Tempi
Unità
Didattica
Ore di
Lezione
Ore di
Laboratorio
Ore di
Verifica
Ore di Recupero
e/o Potenziamento
U.D. 2
6
6
4
2 + (Stage)
Richiami sui database e sul linguaggio SQL
• Il database é un insieme di archivi
integrati che possono costituire
una base di lavoro comune per
utenti diversi con applicazioni
diverse.
I database costruiti secondo il
modello relazionale (DataBase
Relazionali) organizzano i dati in
Tabelle (Relazioni).
Il software di gestione di un database si chiama DBMS (Data Base
Management System), come ad esempio Oracle, Access, Sybase, ecc.
Operazioni sul Database
Sul database si possono eseguire le operazioni di manipolazione
per inserire nuovi dati, per modificare quelli già esistenti o per
cancellare i dati che non servono più. Si possono fare anche delle
interrogazioni (query) per ritrovare i dati che servono.
Il linguaggio standard utilizzato per codificare le operazioni svolte
su un database è il linguaggio SQL (Struttured Query Language).
I valori degli attributi nelle righe della tabella possono essere
inseriti, aggiornati o cancellati mediate i seguenti comandi:
Inserimento
Aggiornamento
Cancellazione
Inserimento
INSERT INTO nome_tabella (campo1, campo2, …, campon)
VALUES (valore1, valore2, …, valoren);
Aggiornamento
UPDATE nome_tabella SET nome_campo = valore
WHERE condizione;
Cancellazione
DELETE FROM nome_tabella WHERE condizione;
N.B.
La clausola WHERE consente di operare su gruppi di record.
I Driver per la connessione al database
Il termine driver indica un programma che
consente ad una periferica hardware di comunicare
con l’unità centrale del computer: il programma
driver ritrova i dati richiesti e li trasferisce al
programma richiedente.
Il driver per database è un programma standard
che consente di trasferire i dati presenti in un
database: quando un programma vuole accedere al
database creato con un altro applicativo, deve
utilizzare il driver per quel database.
ODBC (Open DataBase Connectivity) é l’interfaccia
software standard in ambiente Windows che consente
ai programmatori di scrivere in modo semplice le
applicazioni per connettersi ai database e ritrovare i
dati in essi contenuti.
JDBC (Java DataBase Connectivity) mette a
disposizione una libreria di classi Java per
interfacciare l’accesso ai database che usano lo
standard SQL, con l’obiettivo di fornire
un’uniformità di accesso per un vasto insieme di
prodotti DBMS relazionali.
Cos’è JDBC
Java offre un'interfaccia standard per l'accesso ai database
chiamata JDBC.
Secondo la terminologia di Java il software JDBC è
classificato come una API (Application Programming
Interface), perché fornisce i driver ai database per la
connessione, l’esecuzione dei comandi SQL e le
transazioni verso gli altri database.
JDBC comprende anche il JDCB-ODBC Bridge, un ponte
verso i driver standard ODBC, che rende possibile la
connessione ad altri database creati con i prodotti DBMS
noti, come ad es. Microsoft Access.
Le operazioni di manipolazione e di interrogazione
possono essere eseguite su un database locale usando
applicazioni Java oppure sul database di un server in rete,
usando le applet e le tecnologie del Web.
Come funziona JDBC
I programmi che usano JDBC devono specificare l’uso
del package java.sql del linguaggio Java.
import java.sql.* ;
La classe DriverManager tiene traccia dei driver
disponibili e li gestisce stabilendo la connessione tra un
driver e un particolare database.
Il programmatore carica il driver con il comando:
Class.forName(“nome del driver”)
Ad es. Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Gestione delle Eccezioni
È buona norma inserire la gestione delle eccezioni
nella fase di caricamento del driver utilizzando la
seguente struttura:
try
{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}
catch (ClassNotFoundException e)
{
System.err.print(“ClassNotFoundException : ”);
System.err.println(e.getMessage());
}
La Classe DriverManager
Il programma deve richiedere alla classe
DriverManager di creare una connessione ad un
particolare database specificando il nome di tale
database ed eventualmente il nome dell’utente e la
password per l’autorizzazione d’accesso.
Il nome del database è specificato all’interno di una
stringa che contiene tre informazioni:
 Protocollo
 Sottoprotocollo
 Nome del database secondo il formato previsto
dal driver
Ad es. String url = “jdbc:odbc:databaseX”;
La Classe DriverManager
Il DriverManager controlla se ci sia un driver disponibile
in grado di gestire la richiesta di connessione, quando lo
trova può effettuare la Connessione, in questo modo:
Connection con = DriverManager.getConnection (url,
“username”, “password”);
La stringa viene in genere chiamata url di JDBC perché
richiama il concetto di indirizzo internet, infatti identifica
il protocollo jdbc così come un browser distingue un sito
Internet tramite il protocollo http o ftp.
Se non sono stati fissati username e password la
connessione si ottiene in questo modo:
Connection con = DriverManager.getConnection (url, “”, “”);
La Connessione rappresenta una sessione di lavoro con
uno specifico database.
Esempi di manipolazione dei dati
Dopo aver stabilito una connessione si possono inviare al
database i comandi SQL. Predisponiamo l’istruzione in
una stringa:
String query = “Select * from Utenti”;
Successivamente usiamo il commando JDBC (Statement)
con il metodo createStatement che crea un’istanza della
classe Statement.
Statement stmt = con.createStatement();
I commandi SQL sono attivati con i due metodi
principali applicati allo statement:
Metodo executeUpdate per i comandi SQL di
inserimento, aggiornamento e cancellazione; si usa
anche per i comandi SQL relativi alla creazione (Create
Table), cancellazione (Drop Table) e modifica della
struttura (Alter Table) delle tabelle del DB;
Metodo executeQuery per le interrogazioni
Il primo metodo restituisce il numero di righe che sono
state sottoposte all’operazione di manipolazione della
tabella, il secondo restituisce un insieme di risultati
(ResultSet) contenente le righe della tabella che
soddisfano la condizione specificata nell’interrogazione.
Esempi di interrogazione
Le interrogazioni al database vengono eseguite tramite il
metodo executeQuery.
Ex.
String mySQL = “SELECT a, b, c from Tabella”;
…
ResultSet rs = stmt.executeQuery(mySQL);
Il valore di ritorno del metodo executeQuery è un singolo
ResultSet, cioè un insieme di risultati.
I risultato di una select è una tabella formata dalle righe
selezionate e dalle colonne scelte. Per scorrere questa
tabella si fa riferimento a un cursore che indica la riga
della tabella, ci si muove tra le righe con il metodo next()
mentre la visualizzazione dei risultati contenuti nel
ResultSet si ottiene facendo uso dei metodi getXXX dove
XXX va sostituito con uno dei tipi di dato di Java.
Statement e Prepared Statement
Il metodo createStatement serve per attivare semplici
comandi SQL che non contengono alcun parametro.
JDBC
mette
a
disposizione
il
metodo
prepareStatement, il quale crea un’istanza della classe
PreparedStatement, che è una sottoclasse di
Statement, e quindi ne eredita tutte le funzionalità.
Il metodo preparedStatement risulta particolarmente
utile quando si devono eseguire istruzioni SQL con uno
o più parametri. I parametri sono indicati nel comando
SQL con un ?, in questo modo:
PreparedStatement stmt = con.prepareStatement
(“UPDATE Utenti SET Telefono = ? WHERE Id = ?”);
Esempio 1
import java.sql.* ;
public class Selezione
{
public static void main (String args[])
{
String url = “jdbc:odbc:db1”;
Connection con;
String query = “Select Id, Cognome, Nome, CodFiscale ” +
“FROM Utenti where Provincia = ‘CT’ ”;
Statement stmt;
try
{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}
catch{}
…
} // Close main
} // Close Classe Selezione
try
{
con = DriverManager.getConnection(url, “”, “”);
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next())
{
int cod = rs.getInt(1);
….
String cf = rs.getString(4);
}
stmt.close();
con.close();
}
catch (SQLException ex) { }
Esempio 2
import java.sql.* ;
public class SelezioneParametri
{
public static void main (String args[])
{
String prov;
/* Impostazione dello standard input */
InputStreamReader in = new InputStreamR…(System.in);
BufferReader tastiera = new Buff…(input);
String url = “jdbc:odbc:db1”;
Connection con;
try
{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
}
catch{}
…
} // Close main
} // Close Classe SelezioneParametri
try
{
con = DriverManager.getConnection(url, “”, “”);
PreparedStatement stmt = con.prepareStatement(
“SELECT * FROM Utenti where Provincia = ?”);
try
{ //inserimento da tastiera
System.out.println(“Provincia richiesta ”);
prov = tastiera.readLine();
}
catch (Exception e) { }
Stmt.setString(1, prov);
ResultSet rs = stmt.executeQuery();
while (rs.next())
{
…
}
} catch (SQLException ex) { }
Schema Riassuntivo
executeQuery()
createStatement()
ResultSet
Statement
Connection
Tipo di Dato
PreparedStatement
DriverManager
Applet per la Connessione al Database
Quando si vuole gestire la connessione e l’accesso al
db eseguendo le interrogazioni tramite pagine Web e
browser occorrerà utilizzare un Applet Java. Per
gestire ciò servono due file, uno contenente l’applet e
l’altro contenente il codice HTML che richiama
l’attivazione dell’applet su richiesta dell’utente.
Il codice dell’applet contiene le medesime istruzioni
JDBC utilizzate nelle applicazioni.
Sulla possibilità di accedere ai db in rete occorre
delle osservazioni:
è possibile aprire una connessione con una base
dati remota solo se questa si trova sul server dal
quale l’applet è stato scaricato;
non possibile utilizzare in alcun modo informazioni
presenti sul client.
Conclusioni
Quindi le applet protette si possono utilizzare solo in
una Intranet aziendale, purché il driver ODBC, il
bridge e JDBC siano stati caricati su tutte le
macchine client.
Le classi dei package java che è necessario importare
per creare un applet sono:
java.applet;
java.awt;
java.sql;
java.util;