Servlet & JDBC. Alberto Belussi. anno accademico 2008/2009

Documenti analoghi
Servlet & JDBC ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Servlet: interazione con un DBMS. In Java è possibile interagire con un DBMS attraverso

JDBC. Marco Tessarotto Programmazione dei Web Server Anno Accademico

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

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

JDBC. A. Bechini Accesso a DataD con Java

JDBC versione base. Le classi/interfacce principali di JDBC

Ogni ufficio è formato da 100 dipendenti, i quali hanno a loro volta 3 clienti ciascuno. Inoltre, ad ogni ufficio sono stati assegnati 4 fornitori.

JDBC di base. Le classi/interfacce principali di JDBC

Esercitazione su JDBC

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

Introduzione JDBC interfaccia java.sql driver caricare i driver

PROVA FINALE Ingegneria del software

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

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

DBMS ed Applicazioni Motivazioni

Programmazione Java Avanzata

Capitolo 5. Soluzione: Soluzione in C:

2011 Politecnico di Torino 1

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

Laboratorio di Sistemi Fondamenti di JDBC (parte1) Java. Fondamenti di JDBC

Laboratorio di Basi di Dati e Multimedia

Accesso ad un db con JDBC da java

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

Laboratorio di reti II: Gestione di database lato server

Lezione 9. Applicazioni tradizionali

Basi di Dati: Corso di laboratorio

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

JDBC: SQL NEI LINGUAGGI DI PROGRAMMAZIONE

JDBC: SQL nei linguaggi di programmazione

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

Programma Master Programmatore Java

Basi di Dati Esercitazione JDBC. Giugno 2007

Accesso a Database con JDBC

Corso di Laboratorio di Applicazioni Informatiche. Progetti di Basi di Dati a.a

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

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

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

SQL e linguaggi di programmazione Applicazioni ed SQL: architettura

JDBC. Dispense per il corso di Ingegneria del Web

Laboratorio di Basi di Dati

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Breve guida a PostgreSQL (versione per Windows) Gianluca Cima

Interfaccia JDBC. Sistemi Informativi L-A. Home Page del corso: Versione elettronica: JDBC.

MODULO 2. Query normali e parametriche Query di:

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, JDBC e applicazioni 31/05/2004

Indice. Java. JDBC è l interfaccia di base standard di Java ai database relaionali

Java: la libreria delle classi

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

Tabelle esempio: Impiegato/Dipartimento

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2016/2017

JDBC: Java e database.

Accesso Web a Data Base

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

Basi di Dati. JDBC - Esercitazione n. 4 Quaderno n. 4. Passi preliminari per lo svolgimento delle esercitazioni

Basi di Dati: Corso di laboratorio

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

Scheda 15 Accedere ai DataBase con JDBC

Connessione con MySQL

JDBC Matteo Magnani, Danilo Montesi Università di Bologna. Dati relazionali e JAVA: API JDBC

Sviluppo di applicazioni per basi di dati

Interrogazioni nidificate

Trigger. Basi di dati attive. Trigger: regole che specificano azioni attivate automaticamente dal DBMS al verificarsi di determinati eventi

Per poter interagire con un database in rete mediante uno script php bisogna. innanzitutto cerare una connessione. Ciò si ottiene mediante la funzione

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

Interrogazioni nidificate

Il programma di oggi. Gli indici. Ottimizzazione. Metodi per la Gestione dei Dati (lezioni di laboratorio)

Tecnologie Web T Accesso Diretto alle Basi di Dati: Interfacce e Astrazioni

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

Java EE 1. Andrea Bei

JAVA JDBC. Andrea BEI

Progettazione di siti web centrati sui dati (Data-Intensive Web Applications) Dispensa del corso di Basi di dati e Web

Breve guida a PostgreSQL (versione per Linux) Gianluca Cima

SQL nei linguaggi di programmazione

DATABASE PER IL WEB. Programmazione Web 1

Architettura MVC-2: i JavaBeans

Applicazioni tradizionali

Access. P a r t e t e r z a

Viste in MySQL e accesso a DB da Java

Open Database Connectivity (ODBC)

PROVA SCRITTA 23 MARZO 2010

Corso di Informatica Modulo T3 B2 - Database in rete

Laboratorio di Basi di Dati

Esempio di architettura software

Laboratorio di Basi di Dati

Spiegazioni esercizio Gestione Tabella con PHP e MySQL

Connessione ad una fonte di dati ODBC

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

Istruzioni DCL di SQL. Pag. 119 par.5

Sistemi Informativi e Telemedicina Prof. Mauro Giacomini Anno Accademico

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

Programmazione Java: JDBC

Laboratorio di Basi di Dati

JDBC. Di Michele de Nittis Versione 06/08/2008

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Basi di Dati: Corso di laboratorio

LABORATORIO di INFORMATICA

Programmazione Java Avanzata Spring - JDBC

Esercitazione 02: JDBC, SQL e DB SAMPLE

Progettazione di siti web centrati sui dati (Data-Intensive Web Applications) Dispensa del corso di Basi di dati ( )

ASP e Database. A cura di Michele Cavalieri

Transcript:

Servlet & JDBC Alberto Belussi anno accademico 2008/2009

Servlet: interazione con un DBMS In Java è possibile interagire con un DBMS attraverso l uso della libreria JDBC (Java Database Connectivity). http://java.sun.com/javase/technologies/database JDBC API: fornisce un insieme di classi JAVA che consentono un accesso standardizzato a qualsiasi DBMS purché questo fornisca un driver JDBC.

Driver JDBC E un modulo software in grado di interagire con un DBMS. Traduce ogni invocazione dei metodi delle classi JDBC in comandi SQL accettati dal DBMS a cui è dedicato.

1 PASSO Caricare il driver JDBC per il DBMS che si utilizza. Per caricare il driver, basta caricare la classe corrispondente: import java.sql.* Class.forName( forname( NomeDriver ); NomeDriver Per postgresql il nome del driver è: org.postgresql.driver

2 PASSO Definire una connessione identificando l URL della base di dati a cui ci si vuole connettere. String URL = jdbc:postgresql://arena/didattica tipo DBMS DBMS server database

3 PASSO Stabilire una connessione istanziando un oggetto della classe Connection: String user = Utente-postgres ; String passwd = Password-utente ; Connection con = DriverManager.getConnection( URL, user, passwd);

4 PASSO Utilizzando l oggetto della classe Connection creato al passo precedente, creare un oggetto della classe Statement per poter sottomettere comandi al DBMS: Statement stat = con.createstatement();

5 PASSO Eseguire un interrogazione SQL o un comando SQL di modifica: Interrogazione String query = SELECT * FROM PERSONA ; ResultSet res = stat.executequery(query); Aggiornamento String update = UPDATE PERSONA + SET NOME = Rosa WHERE id = 1 ; stat.executeupdate(update);

6 PASSO Processare il risultato dell interrogazione attraverso l applicazione dei metodi della classe resultset. Il resultset è un cursore che consente di accedere alle tuple risultato dell interrogazione: puntatore alla tupla corrente resultset query JDBC Base di dati

6 PASSO E possibile scandire in modo sequenziale il contenuto t di un resultset: t String query = SELECT * FROM PERSONA ; resultset res = stat.executequery(query); while(res.next()) { } Il metodo next()sposta il puntatore sulla tupla successiva.

6 PASSO E possibile accedere alle proprietà della tupla corrente di un resultset con i seguenti metodi: getxxxx(par): dove Xxxx è un tipo base di Java e par può essere un indice di posizione i o il nome di un attributo t della relazione risultato dell interrogazione; questo metodo restituisce il valore in posizione par oppure il valore dell attributo di nome par della tupla corrente. wasnull: si riferisce all ultima invocazione di getxxxx e restituisce true se il valore letto era uguale al valore nullo. (molti altri metodi sono disponibili)

7 PASSO Chiudere la connessione usando l oggetto della classe Connection: con.close();

Variante del 5 PASSO E possibile ottimizzare l esecuzione di una interrogazione che deve essere rifatta più volte usando la classe PreparedStatement. Tale classe consente di inserire parametri nell interrogazione e di valorizzarli, attraverso specifici metodi, prima dell effettiva esecuzione dell interrogazione stessa.

Variante del 5 PASSO Esempio: Connection con = DriverManager.getConnection(URL, user, passwd); String q = SELECT Nome, Cognome + FROM Persona + WHERE id =? ; PreparedStatement pstat = con.preparestatement(q); pstat.setint(1, 15); ResultSet res = pstat.executequery();

Transazioni in JDBC E possibile eseguire transazioni in JDBC come segue: Con.setAutoCommit(false); preparedstatement ps1 = con.preparestatement( UPDATE CONTO SET SALDO=SALDO+? + WHERE NUMERO=? AND FILIALE = X ); ps1.setint(1, 1000); ps1.setint(2, 358); ps1.execute(); preparedstatement ps2 = con.preparestatement( UPDATE CONTO SET SALDO=SALDO-? + WHERE NUMERO=? AND FILIALE = X ); ps2.setint(1, 1000); ps2.setint(2, 876); ps2.execute(); con.commit(); con.setautocommit(true);