Come trattare il risultato di un comando SQL (relazioni) che



Похожие документы
LA REALIZZAZIONE DI APPLICAZIONI ALCUNE ARCHITETTURE

LA REALIZZAZIONE DI APPLICAZIONI. Quattro parti: Gestione dati. Business rules. Logica applicativa. Interfaccia utente. Molte possibili architetture

SQL e applicazioni. Capitolo 8. SQL e linguaggi di programmazione. Applicazioni ed SQL: architettura. Una difficoltà importante.

Esercitazione su JDBC

JDBC versione base. Le classi/interfacce principali di JDBC

Introduzione JDBC interfaccia java.sql driver caricare i driver

Lezione 9. Applicazioni tradizionali

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Capitoli 8 e 9. SQL embedded. Applicazioni tradizionali Applicazioni Internet. Sistemi di basi di dati Raghu Ramakrishnan, Johannes Gehrke

JDBC di base. Le classi/interfacce principali di JDBC

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC

Dominio applicativo. Progettazione. v SQL incluso in codice applicativo v Embedded SQL v Cursori v Dynamic SQL v JDBC v Stored procedures

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

APPENDICE. Procedure in SQL (1)

DBMS ED APPLICAZIONI (CAPITOLO 6) SQL incluso in codice applicativo Embedded SQL Cursori Dynamic SQL JDBC Stored procedures

JDBC. A. Bechini Accesso a DataD con Java

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

JDBC per l accesso Java a DB. Tito Flagella tito@link.it

PROGRAMMA CORSO Analista Programmatore JAVA - ORACLE

Funzioni scalari in SQL. Capitolo 5. coalesce. nullif. Altre funzioni scalari. case

Corso di Informatica Modulo T3 B2 - Database in rete

Introduzione. 8- Programmazione di una base di dati attraverso JDBC ESEMPIO

Oracle PL/SQL. Motivazioni

Esercitazione 4 JDBC

Algoritmi di Ricerca. Esempi di programmi Java

Sviluppo di applicazioni per basi di dati

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

SQL e linguaggi di programmazione Applicazioni ed SQL: architettura

SQL e linguaggi di programmazione

Che cos è un DBMS? Capitolo 1. Perché usare un DBMS? DBMS. Descrizioni dei dati nei DBMS. Modelli di dati

Basi di Dati: Corso di laboratorio

Basi di dati (6) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. andrea.bulgarelli@gmail.com Argomento: T-SQL (1.

PL/SQL Uso di un linguaggio procedurale per un database

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D

Sistema di Gestione di Basi di Dati DataBase Management System DBMS

PL/SQL PL/SQL. Ordine degli elementi dei triggers di Oracle. Differenze nei triggers. Versione dei trigger e PSM di Oracle

SQL nei linguaggi di programmazione

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

Scheda 15 Accedere ai DataBase con JDBC

Triggers. Basi dati attive. Trigger. Indipendenza della conoscenza

JDBC Driver Manager. JDBC Architettura generale. JDBC - Tipi di dato. JDBC - Flusso applicativo. JDBC - Tipi di dato. ODBC Driver. Livello di gestione

Java: la libreria delle classi

Architettura MVC-2: i JavaBeans

Linee guida per la programmazione di transazioni in PL/SQL

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Laboratorio di reti II: Gestione di database lato server

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Stored Procedures. Antonella Poggi, Claudio Corona. Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma

Il DBMS Oracle. Express Edition. Donatella Gubiani e Angelo Montanari

Introduzione ai Sistemi di Gestione di Basi di Dati XML

Lezione V. Aula Multimediale - sabato 29/03/2008

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Programmazione Java Avanzata Spring - JDBC

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement

Database e reti. Piero Gallo Pasquale Sirsi

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

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

Dispensa di database Access

Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo

Capitolo 5. Soluzione: Soluzione in C:

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:

JDBC. Dispense per il corso di Ingegneria del Web

Sistemi per la gestione di database: MySQL ( )

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Informatica per le discipline umanistiche 2 lezione 10

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC

PROVA FINALE Ingegneria del software

Gestione dei File in C

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

Basi di Dati Esercitazione JDBC

DATABASE.

DBMS (Data Base Management System)

Capitolo 7. Esercizio 7.1

I file di dati. Unità didattica D1 1

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

DAL DIAGRAMMA AL CODICE

CONCETTO DI ANNIDAMENTO

Introduzione al Python

Al giorno d oggi, i sistemi per la gestione di database

Le Basi di Dati. Le Basi di Dati

GERARCHIE RICORSIVE - SQL SERVER 2008

Introduzione alla programmazione in C

Транскрипт:

USO DI SQL DA PROGRAMMI: PROBLEMI 1 Come collegarsi alla BD Come trattare gli operatori SQL Come trattare il risultato di un comando SQL (relazioni) che Come scambiare informazioni sull esito delle operazioni. DECLARE Variabili Istruzioni Istruzioni SQL DBMS EXCEPTION Gestori fallimenti END USO DI SQL DA PROGRAMMI: APPROCCI 2 Linguaggio integrato (dati e DML) Linguaggio disegnato ad-hoc per usare SQL. I comandi SQL sono controllati staticamente dal traduttore ed eseguiti dal DBMS. Linguaggio convenzionale + API Linguaggio convenzionale che usa delle funzioni di una libreria predefinita per usare SQL. I comandi SQL sono stringhe passate come parametri alle funzioni che poi vengono controllate dinamicamente dal DBMS prima di eseguirle. Linguaggio che ospita l'sql Linguaggio convenzionale esteso con un nuovo costrutto per marcare i comandi SQL. Occorre un pre-compilatore che controlla i comandi SQL, li sostituisce con chiamate a funzioni predefinite e genera un programma nel linguaggio convenzionale + API.

UN LINGUAGGIO INTEGRATO: PL/SQL DI ORACLE 3 Un linguaggio per manipolare basi di dati che integra DML (SQL) con il linguaggio ospite Un linguaggio a blocchi con una struttura del controllo completa che contiene l SQL come sottolinguaggio Permette: Di definire variabili di tipo scalare, record (annidato), insieme di scalari, insiemi di record piatti, cursore Di definire i tipi delle variabili a partire da quelli della base di dati Di eseguire interrogazioni SQL ed esplorarne il risultato Di modificare la base di dati Di definire procedure e moduli Di gestire il flusso del controllo, le transazioni, le eccezioni UNA PROCEDURA IN PL/SQL 4 CREATE PROCEDURE Esempio1( p_mat IN Studenti.Matricola%TYPE) IS DECLARE -- Identificatori per lo scambio dati XNome CHAR; XProvincia Studenti.Provincia%TYPE; XAttributi Studenti%ROWTYPE; prv_manca EXCEPTION; -- ricerca di ennupla : stampa Nome e Provincia SELECT Nome, Provincia INTO XNome, XProvincia FROM Studenti WHERE Matricola = p_mat; IF XProvincia IS NULL THEN RAISE prv_manca ELSE PRINT. END IF EXCEPTION WHEN prv_manca THEN <gestione eccezione> END;

CURSORE 5 E' il meccanismo per ottenere uno alla volta gli elementi di una relazione Un cursore viene definito con un'espressione SQL, poi si apre per far calcolare al DBMS il risultato e poi con un opportuno comando si trasferiscono i campi delle ennuple in opportune variabili del programma. OPEN Risultato FETCH CLOSE USO DEI DATI DA PROGRAMMI (cont.) Cursore + FETCH 6 PROCEDURE Esempio2 (Prov IN Studenti.Provincia%TYPE) IS DECLARE CURSOR c IS SELECT Nome, AnnoNascita FROM Studenti WHERE Provincia = Prov; Stud_Rec c%rowtype; -- ricerca di insieme di ennuple : stampa Nome e -- AnnoNascita degli studenti di Pisa OPEN c LOOP FETCH c INTO Stud_Rec; EXIT WHEN c%notfound; PRINT... Stud_Rec.Nome... Stud_Rec.Provincia END LOOP; CLOSE c -- rilascio del cursore END

USO DEI DATI DA PROGRAMMI (cont.) FOR e cursore implicito 7 PROCEDURE Esempio3 (Prov IN Studenti.Provincia%TYPE) IS -- ricerca di insieme di ennuple: stampa Nome e -- AnnoNascita degli studenti di Pisa */ FOR Stud_Rec IN (SELECT Nome, AnnoNascita FROM Studenti WHERE Provincia = Prov) LOOP PRINT... Stud_Rec.Nome... Stud_Rec.Provincia END LOOP; -- rilascio del cursore END LINGUAGGIO CON INTERFACCIA API 8 Invece di modificare il compilatore di un linguaggio, si usa una libreria di funzioni/oggetti che operano su basi di dati (API) alle quali si passa come parametro stringhe SQL e ritornano il risultato sul quale si opera con una logica ad iteratori. Microsoft ODBC è C/C++ standard su Windows Sun JDBC è l'equivalente in Java Dovrebbero essere indipendenti dal DBMS un driver gestisce le richieste e le traduce in un codice specifico di un DBMS la BD può essere in rete

SQL API in Java (JDBC) 9 class StampaNomiStudenti{ public static void main(string argv[]){ Class.forName("driver per DBMS"); Connection con = // connect DriverManager.getConnection("url", "login", "pass"); Statement stmt = con.createstatement(); // crea un oggetto per comando SQL String query = "SELECT Nome FROM Studenti WHERE Provincia = " + argv[0] + " "; ResultSet iter = stmt.executequery(query); System.out.println("Nomi trovati:"); try { // gestore eccezioni // ciclo sul risultato while (iter.next()) { String nome = iter.getstring("nome"); int anno = iter.getint("annonascita"); System.out.println(" Nome: " + nome + ; AnnoNascita: " + anno); catch(sqlexception ex) { System.out.println(ex.getMessage()+ex.getSQLState()+ex.getErrorCode()); stmt.close(); con.close(); LINGUAGGIO CHE OSPITA L'SQL: UN ESEMPIO 10 char SQLSTATE[6]; EXEC SQL DECLARE SECTION char c_sname[20]; short c_annonascita; EXEC SQL END DECLARE SECTION short c_provincia = Pisa ; EXEC SQL DECLARE sinfo CURSOR FOR SELECT S.nome, S.annoNascita FROM Studenti S WHERE S.Provincia = :c_provincia ORDER BY S.nome; do { EXEC SQL FETCH sinfo INTO :c_snome, :c_annonascita; printf( Nome:%s; AnnoNascita: %s \n, c_snome, c_annonascita); while (SQLSTATE!= 02000 ); EXEC SQL CLOSE sinfo;

SQLJ: JAVA CHE OSPITA L'SQL 11 Dialetto di SQL che può essere immerso in programmi Java, che poi vengono tradotti da un precompilatore in programmi Java standard sostituendo i comandi SQL in chiamate di una libreria che usano JDBC public static void main(string argv[]){ Oracle.connect ("jdbc:oracle:oci8:@", "scott", "tiger"); #SQL iterator GetNomeIter(String Nome, int AnnoNascita); GetNomeIter iter; #SQL iter = {SELECT Nome, AnnoNascita AS Anno from Studenti where Provincia = :(argv[0]); System.out.println("Nomi trovati:"); while (iter.next()) { String nome = iter.nome(); int anno = iter.anno(); System.out.println(" Nome = " + nome + \n); iter.close(); Oracle.close();