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



Похожие документы
Introduzione JDBC interfaccia java.sql driver caricare i driver

JDBC. A. Bechini Accesso a DataD con Java

JDBC versione base. Le classi/interfacce principali di JDBC

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

Esercitazione su JDBC

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

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

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

Basi di Dati: Corso di laboratorio

Accesso a Database con JDBC

JDBC. Dispense per il corso di Ingegneria del Web

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

PROVA FINALE Ingegneria del software

Scheda 15 Accedere ai DataBase con JDBC

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

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

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

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

Java: la libreria delle classi

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

JDBC: Java e database.

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

Architettura MVC-2: i JavaBeans

Programmazione Java Avanzata Spring - JDBC

Lezione 9. Applicazioni tradizionali

Laboratorio di reti II: Gestione di database lato server

Corso di Informatica Modulo T3 B2 - Database in rete

Accesso Web a Data Base

Sviluppo di applicazioni per basi di dati

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

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

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Tecnologia e Applicazioni Internet 2011/12

JAVA JDBC. Andrea BEI

User Tools: DataBase Manager

Laboratorio di Basi di Dati e Multimedia

Programmazione Java: JDBC

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

Programmazione Java Avanzata

Dispensa di database Access

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

Analisi e sviluppo di un componente per un ESB open source

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

PMF Integration Tools

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Capitolo 13. Interrogare una base di dati

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

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

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

Programmazione delle basi di dati attraverso JDBC

Esercitazione 4 JDBC

Lavorare con JDBC L'impiego di JDBC è semplice, e solitamente si articola attraverso quattro passi:

2104 volume III Programmazione

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

PHP e MySQL. Scripting server-side per accesso a DB MySQL

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

SQL e linguaggi di programmazione Applicazioni ed SQL: architettura

Ingegneria del Software: JDBC.

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

Esercitazione 01: DDL e DML di base

DBMS (Data Base Management System)

Visualizzazione ordini in MyShopDB

SQL Server. Applicazioni principali

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

Unità 2.1 Comandi sui database

JDBC: SQL NEI LINGUAGGI DI PROGRAMMAZIONE

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

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

Corso sul linguaggio SQL

Informatica per le discipline umanistiche 2 lezione 10

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

Volumi di riferimento

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

JDBC Un API JAVA per accedere a Basi di Dati Relazionali. Contenuti. Cos è JDBC? Introduzione a JDBC. Perché JDBC. Inside JDBC.

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

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

SQL Server Introduzione all uso di SQL Server e utilizzo delle opzioni Olap. Dutto Riccardo - SQL Server 2005.

Connessione ad una fonte di dati ODBC

Транскрипт:

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

JDBC fornisce una libreria standard per l accesso a database relazionali Non è un acronimo ufficiale ma è comunemente interpretato come Java DataBase Connectivity l API standardizza: le modalità per la connessione al DB le modalità per la realizzazione di query le API per l accesso ai risultati delle query Per le query utilizza SQL JDBC

I passi tipici di un applicazione JDBC Caricamento del Driver Stabilire la connessione Creazione di un oggetto Statement Esecuzione di una query Trattamento dei risultati Chiusura della connessione

Caricamento del Driver Manager JDBC è composto da due componenti: l implementazione dell interfaccia standard JDBC: import java.sql.* il Driver Manager per lo specifico DB Engine utilizzato

Caricamento del Driver Manager (2) Il Driver va caricato dinamicamente try { Class.forName( org.postgresql.driver"); } catch { ClassNotFoundException e) { System.out.println("Error loading driver: " + e); } javac test.java java classpath.:/home/projects/isi/download/pg74.216.jdbc3.jar test

Stabilire la Connessione Connection con = DriverManager.getConnection(dbURL, mylogin, mypassword); dburl = jdbc:dbms-name:db-name Es: DriverManager.getConnection( jdbc:postgresql://giada/rossi", "user-name", secret );

Oggetti Statement (1) Statement stmt = con.createstatement(); L'oggetto Statement supporta la spedizione di istruzioni SQL al DB

Oggetti Statement (2) Sull'oggetto Statement possono essere attivati i metodi: executeupdate: operazioni di creazione o aggiornamento tabella stmt.executeupdate("create TABLE Persona (NOME VARCHAR(32), COGNOME VARCHAR(32))"); stmt.executeupdate("insert INTO Persona VALUES ('Pippo, 'Franco')");

Oggetti Statement (3) executequery: operazioni select stmt.executequery("select * from Persona");

Il trattamento dei risultati ResultSet rs = stmt.executequery("select login, nome, cognome FROM utenti"); Il metodo next può essere usato per posizionare il cursore sul record successivo while (rs.next()) ) Inizialmente il cursore non punta a nessuno oggetto; la next va chiamata almeno una volta In JDBC 2.0 il cursore può essere mosso anche indietro o spostato di un offset

Accesso ai Dati del cursore Si utilizzano i metodi getxxx, con XXX=Int, String, Float, Il parametro del metodo può essere il nome del campo nella select o il suo indice rs.getstring( login") oppure rs.getstring(1)

Mapping dei tipi Java/DB

Prepared Statement E sempre preferibile usare i PreparedStatement rispetto agli Statement (usarli è un requisito del progetto!) Si tratta di istruzioni parametriche precompilate, con significativi vantaggi: Efficienza, a causa della precompilazione; ad ogni uso vengono semplicemente passati i parametri da usare, tramite appositi metodi Sicurezza: generalmente immuni agli attacchi di tipo sql injection

Prepared Statement (2) PreparedStatement preparedperson = con.preparestatement("select * FROM members WHERE email =?"); preparedperson.setstring(1, rossi@example.com"); preparedperson.executequery();

Settaggio Dati delle PreparedStatement Si utilizzano i metodi setxxx, con XXX=Int, String, Float, Il parametro del metodo può essere il nome del campo dell istruzione SQL o il suo indice stm.setstring( email") stm.setstring(1)

SQL Injection Consideriamo la query: SELECT * FROM members WHERE email = Usando gli statement stmt.executequery("select * FROM members WHERE email = + email_input + ); Usando i PreparedStatement con.preparestatement(" SELECT * FROM members WHERE email =?"); preparedperson.setstring(1, email_input );

SQL Injection (2) Input: steve@unixwiz.net SELECT * FROM members WHERE email = 'steve@unixwiz.net ; Input: steve@unixwiz.net SELECT * FROM members WHERE email = 'steve@unixwiz.net ; Input: anything' OR 'x'='x SELECT * FROM members WHERE email = 'anything' OR 'x'='x'; Input: anything'; DROP TABLE members SELECT * FROM members WHERE email = 'x'; DROP TABLE members

con.close(); Chiusura della connessione

Uso dei Connection Pool Le connessioni devono essere diverse per ogni thread Non è possibile usare un unica connessione creata nella init Il costo della creazione e del rilascio di una connessione per ogni accesso al DB è eccessivo Si usa un Connection Pool Le connessioni vengono create on-demand e allocate in un pool L applicazione richiede la connessione al pool, anziché crearla Al termine, rilascia la connessione al pool A regime, le connessioni vengono create una volta sola e poi riusate più volte 19