Esercitazione su JDBC



Похожие документы
JDBC versione base. Le classi/interfacce principali di JDBC

Introduzione JDBC interfaccia java.sql driver caricare i driver

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

JDBC di base. Le classi/interfacce principali di JDBC

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

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

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

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

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

JDBC. A. Bechini Accesso a DataD con Java

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

Corso di Informatica Modulo T3 B2 - Database in rete

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

Java: la libreria delle classi

PROVA FINALE Ingegneria del software

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

Laboratorio di reti II: Gestione di database lato server

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

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

Scheda 15 Accedere ai DataBase con JDBC

Sviluppo di applicazioni per basi di dati

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

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

Architettura MVC-2: i JavaBeans

Applicazione ASP di esempio

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

Lezione 9. Applicazioni tradizionali

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

Accesso a Database con JDBC

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

JDBC. Dispense per il corso di Ingegneria del Web

Basi di Dati Esercitazione JDBC

Accesso Web a Data Base

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

Programmazione Java Avanzata Spring - JDBC

Esercitazione 02: JDBC, SQL e DB SAMPLE

ACTIVE SERVICE PAGES E DATABASE: tecnologia ADO

Basi di Dati: Corso di laboratorio

Database e reti. Piero Gallo Pasquale Sirsi

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

Esercitazione sulle libpq - libreria C per PostgreSQL

Esercitazione 4 JDBC

Volumi di riferimento

Dispensa di database Access

LEGGERE E VISUALIZZARE I DATI DI UNA TABELLA IN UNA PAGINA WEB

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

Esempio di architettura software

Una metodologia di progettazione di applicazioni web centrate sui dati

JAVA JDBC. Andrea BEI

Programmazione Java: JDBC

Esercitazione 01: DDL e DML di base

Data Base in Internet

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

Sistemi Informativi T

Come configurare JCREATOR (1/3)

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

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

GESTIONE DI MDB in WEB

Introduzione ai Sistemi di Gestione di Basi di Dati XML

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

Esercitazione 01: DDL e DML di base

19. LA PROGRAMMAZIONE LATO SERVER

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

Simulazione seconda prova Esame di Stato Sito Web - Gestione di un centro agroalimentare all ingrosso (Parte seconda)

LEGGERE E VISUALIZZARE I DATI FILTRATI E CALCOLATI DI UNA TABELLA IN UNA PAGINA WEB

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

La tecnologia ASP.NET e i database

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

Programmazione Java Avanzata

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

GERARCHIE RICORSIVE - SQL SERVER 2008

JDBC: Java e database.

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Esercitazione 8. Basi di dati e web

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

Introduzione a phpmyadmin

Tecnologie di Sviluppo per il Web

Транскрипт:

Esercitazione su JDBC Basi di Dati L Ingegneria dei Processi Gestionali (Ilaria Bartolini - Roberto Cabras)

come usare SQL (1) Le istruzioni SQL possono essere eseguite interattivamente Ese JDBC 2

come usare SQL (2) o inserendole nel codice di un applicazione scritta in un linguaggio di programmazione ospite (ad es. Java) System.out.println("Retrieve some data from the database..."); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery("select * FROM employee"); // display the result set while (rs.next()) { String a = rs.getstring(1); String str = rs.getstring(2); System.out.print(" empno= " + a); System.out.print(" firstname= " + str); System.out.print("\n"); rs.close(); stmt.close(); Ese JDBC 3

DB2 e sviluppo software di base DB2 mette a disposizione interfacce di programmazione (API) per i principali linguaggi di programmazione, quali C/C++, Java, VB Un esempio d uso di base di DB2 può essere quello di costruire applicazioni client che, conoscendo la struttura delle tabelle del database (DB) residente sul server e utilizzando un API per connettersi al DB stesso, interrogano e/o aggiornano il contenuto delle tabelle mediante statement SQL Connessione al DB Esecuzione di Statement Terminazione della Connessione Ese JDBC 4

JDBC (Java Database Connectivity) Cos è JDBC? È un API Java per programmi (scritti in Java) di connessione a dati residenti in DB relazionali Consiste di un insieme di classi e interfacce scritte nel linguaggio di programmazione Java (package java.sql ) Fornisce un API standard per sviluppatori di tool/db e rende possibile scrivere applicazioni DB usando un API Java pura Cosa fa JDBC? Stabilisce una connessione a un DB Invia istruzioni SQL Processa i risultati Ese JDBC 5

interfacce e classi JDBC (1) ƒ Interfaccia Driver: si occupa (per un DBMS specifico) della connessione, e dell autenticazione. Ogni driver ha una stringa di connessione che riconosce nella forma: jdbc:product_name:database_alias in cui database_alias specifica a quale database del DBMS connettersi ( nel caso del laboratorio CCIB: jdbc:db2:sample/studenti) ƒ Classe DriverManager: in essa vengono registrati i driver dei diversi DBMS e ad essa si rivolgono le richieste di connessione ƒ Interfaccia Connection: rappresenta una connessione a un DB ƒ Interfaccia Statement: si occupa degli statement di interrogazione e/o aggiornamento Ese JDBC 6

interfacce e classi JDBC (2) ƒ Interfaccia PreparedStatement: si occupa dell esecuzione di query compilate ƒ Interfaccia CallableStatement: si occupa dell esecuzione stored procedure ƒ Interfaccia ResultSet: rappresenta i dati restituiti dalle interrogazioni Ese JDBC 7

Struttura di un applicazione JDBC Client Java Application JDBC driver manager JDBC Driver DBMS Server DBMS Ese JDBC 8

JDBC e DB2 DB2 prevede 2 driver JDBC: 1. driver network enabled COM.ibm.db2.jdbc.net.DB2Driver 2. driver nativo COM.ibm.db2.jdbc.app.DB2Driver entrambi sono contenuti nel file db2java.zip (direttorio \sqllib\java ) driver network enabled serve per connettersi attraverso la rete (Es. DBASE2) a server remoti che abbiano in esecuzione il servizio DB2 Jdbc Applet Server driver nativo permette di connettersi ad istanze DB2 residenti sulla macchina locale o catalogate localmente Ese JDBC 9

JDBC: passi principali 1. Importazione dei package 2. Registrazione dei driver JDBC 3. Apertura di una connessione al DB (Connection) 4. Creazione di un oggetto Statement 5. Esecuzione di una query e restituzione di un oggetto ResultSet 6. Utilizzazione dell oggetto ResultSet 7. Chiusura degli oggetti ResultSet e Statement 8. Chiusura della Connection Ese JDBC 10

1: Importazione package // Questo programma mostra un semplice esempio di // applicazione Java (Esempio.java) in grado di eseguire // interrogazioni/aggiornamenti sul database DB2 SAMPLE // utilizzando JDBC //importazione package import java.sql.*; //package JDBC Ese JDBC 11

2: Registrazione driver JDBC class Esempio { static { try { // caricamento e registrazione driver Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance(); catch (Exception e) { e.printstacktrace(); Ese JDBC 12

3: Apertura connessione database public static void main(string argv[]) { Connection con = null; // URL jdbc:db2:database_alias String url = "jdbc:db2:sample"; try { if (argv.length == 2) { String userid = argv[0]; String passwd = argv[1]; // connessione con id/password forniti dall utente con = DriverManager.getConnection(url, userid, passwd); else { System.out.println("\nUsage: java Esempio username password\n"); System.exit(0); Ese JDBC 13

4. Creazione oggetto Statement // interrogazione table EMPLOYEE System.out.println("Retrieve some data from the database..."); Statement stmt = con.createstatement(); Ese JDBC 14

5. Esecuzione query, restituzione oggetto ResultSet & 6. Utilizzazione oggetto ResultSet // esegue la query ResultSet rs = stmt.executequery ("SELECT * FROM DB2ADMIN.EMPLOYEE"); System.out.println("Received results:"); // mostra i risultati // rs.next() = false se non ci sono più righe risultato while (rs.next()) { String a = rs.getstring(1); String str = rs.getstring(2); System.out.print(" empno= " + a); System.out.print(" firstname= " + str); System.out.print("\n"); Ese JDBC 15

7. Chiusura oggetti ResultSet e Statement // chiude ResultSet e Statement rs.close(); stmt.close(); Ese JDBC 16

Esecuzione di altre istruzioni SQL 8. Chiusura Connection // aggiorna il database prova ad aggiornarlo! - System.out.println("\n\nUpdate the database... "); stmt = con.createstatement(); int rowsupdated = stmt.executeupdate("update DB2ADMIN.EMPLOYEE SET firstnme = 'SHILI' WHERE empno = '000010'"); System.out.print("Changed "+rowsupdated); if (1 == rowsupdated) System.out.println(" row."); else System.out.println(" rows."); stmt.close(); // chiude Statement con.close(); // chiude Connection catch( Exception e ) { e.printstacktrace(); Ese JDBC 17

Corrispondenze tipi di dato SQL - Java Alcuni tipi di dato specifici di SQL devono essere mappati in corrispondenti tipi di dato Java per poter essere utilizzati La conversione riguarda tre categorie: Alcuni tipi di dato SQL hanno i diretti equivalenti in Java e possono essere letti direttamente nei tipi Java (esempio: il tipo INTEGER SQL è equivalente al tipi int di Java) Alcuni tipi di dato SQL possono essere convertiti negli equivalenti tipi di Java (esempio: il tipo SQL CHAR e VARCHAR possono essere convertiti nel tipo String di Java) Una minoranza di tipi di dato SQL sono unici e necessitano della creazione di uno speciale oggetto Java, relativo a una classe dato, per ottenere l equivalente SQL (esempio: il tipo SQL DATE si converte nell oggetto Date definito dall omonima classe Java) Ese JDBC 18

Esempio con Access e ODBC Prima Parte // Registrazione del Package import java.net.url; import java.sql.*; public class ProvaJDBC // Registrazione del driver ODBC public static void main(string args[]) { String url = "jdbc:odbc:prova"; \\ prova = nome della sorgente dati ODBC Ese JDBC 19

Esempio con Access e ODBC Seconda Parte // Driver Connessione - Statement Connection con; String querystring; querystring = "SELECT * FROM Contatti ; Statement stmt; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(java.lang.classnotfoundexception e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); try { con = DriverManager.getConnection(url, "LOGIN", "PASSWD"); stmt = con.createstatement(); ResultSet rs stmt.executequery(querystring); Ese JDBC 20

Esempio con Access e ODBC Terza Parte // mostra i risultati // Come con DB2. piccola variante per getstring while (rs.next()) { String snome = rs.getstring( Nome ); String scognome = rs.getstring( Cognome ); System.out.print(" nome= " + snome); System.out.print(" cognome= " + scognome); System.out.print("\n"); Ese JDBC 21

Esempio con Access e ODBC Conclusione // Nessun cambiamento rispetto a JDBC stmt.close(); con.close(); catch(sqlexception ex) { System.err.println("SQLException: " + ex.getmessage()); Ese JDBC 22

Esempio in Asp con Jet Engine e ADO Il principio non cambia : cambia solo la sintassi Dim con, rs ssource = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath( agenda.mdb") & ";" set con = server.createobject("adodb.connection") connessione con.open ssource set rs = server.createobject("adodb.recordset") SqlStat="SELECT * FROM Contatti;" rs.open SqlStat, con while not rs.eof response.write rs.fields( Nome ) response.write rs.fields( Cognome ) loop rs.close() chiusura set rs = nothing Ese JDBC 23

Informazioni Utili Per la documentazione relativa al pakage java.sql seguire il collegamento Java2Docs che si trova sul desktop Per saperne di più: http://java.sun.com/products/jdbc/ http://java.sun.com/j2se/1.3/docs/guide/jdbc/index.html Ese JDBC 24