Programmazione Java: JDBC

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

JDBC. A. Bechini Accesso a DataD con Java

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

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

Introduzione JDBC interfaccia java.sql driver caricare i driver

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

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

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

Esercitazione su JDBC

Accesso a Database con JDBC

PROVA FINALE Ingegneria del software

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

Java: la libreria delle classi

Corso di Informatica Modulo T3 B2 - Database in rete

Lezione 9. Applicazioni tradizionali

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

JDBC: Java e database.

Laboratorio di reti II: Gestione di database lato server

Scheda 15 Accedere ai DataBase con JDBC

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

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

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

Basi di Da( MySQL & MySQL Workbench. Anna Monreale

Tecnologia e Applicazioni Internet 2011/12

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

Laboratorio di Basi di Dati e Web

Basi di Dati: Corso di laboratorio

JDBC. Dispense per il corso di Ingegneria del Web

Corso sul linguaggio SQL

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

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Architettura MVC-2: i JavaBeans

Programmazione Java Avanzata Spring - JDBC

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

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.

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

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

Laboratorio di Basi di Dati

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

Corso di Informatica (Basi di Dati)

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

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

Introduzione a MySQL

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

19. LA PROGRAMMAZIONE LATO SERVER

Volumi di riferimento

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

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

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

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

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

Gestione delle tabelle

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

Tool. Basi di Dati e Sistemi Informativi Prof. Marco Di Felice Dott.sa Sara Zuppiroli A.A

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

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

SQL - Tipi di dato Il linguaggio SQL

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

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

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

Dispensa di database Access

Esercitazione sulle libpq - libreria C per PostgreSQL

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

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

MySQL Database Management System

User Tools: DataBase Manager

Esercitazione 4 JDBC

Sviluppo di applicazioni per basi di dati

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

SQL nei linguaggi di programmazione

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

JDBC: SQL nei linguaggi di programmazione

Programmazione in Java Parte I: Fondamenti

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5

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

Il linguaggio SQL: DDL di base

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

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

Corso breve su automazione d'ufficio

Database e reti. Piero Gallo Pasquale Sirsi

Definizione di domini

Транскрипт:

Programmazione Java: JDBC romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp

Roadmap Introduzione Risorse Driver Contesto Applicativo SQL Classi e interfacce Passi» Registrare un driver» Stabilire una connessione al DB» Creare uno statement» Eseguire l SQL» Processare il risultato» Eliminare gli oggetti JDBC

( 1 ) (JDBC) Java Database Connectivity Le API JDBC consentono di accedere a qualsiasi tipo di dati tabulari, in particolare a i dati memorizzati in database relazionali JDBC consente di scrivere applicazioni Java che gestiscono queste tre attività di programmazione:» Connettere un'origine dati (e.g., database)» Inviare query e istruzioni di aggiornamento per il database» Recuperare ed elaborare i risultati ricevuti dal database in risposta alla tua richiesta

( 2 ) (JDBC) Java Database Connectivity Esempio dei 3 passi precedenti: public void connecttoandquerydatabase(string username, String password) {!! Connection con = DriverManager.getConnection(! "jdbc:mydriver:mydatabase",! crea un'istanza di un oggetto Statement che effettua la query! SQL al database!! username,! password);!! Statement stmt = con.createstatement();! ResultSet rs = stmt.executequery("select a, b, c FROM Table1");! while (rs.next()) {! int x = rs.getint("a");! String s = rs.getstring("b");! float f = rs.getfloat("c");!! crea un oggetto DriverManager per connettersi ad un database driver e accedere al database crea un'istanza di un oggetto ResultSet che recupera i risultati della query infine esegue un semplice ciclo while, che recupera e visualizza i risultati

( 3 ) (JDBC) Java Database Connectivity JDBC include:» API JDBC - Un insieme di interfacce che fanno parte della piattaforma Java e costituiscono le API per il programmatore» JDBC Driver Manager - Gestore di driver che permette a driver di terze parti di connettersi ad un DB specifico Un driver JDBC permette di» Connettersi ad un DB» Inviare un comando SQL» Processare il risultato

Risorse Libri» Titolo: Java 2 Volume II settima edizione Autori: Cay S. Horstmann, Gary Cornell Casa Editrice: Prentice Hall ISBN: 88-7192-237-9» Titolo: JDBC API Tutorial and Reference Terza edizione Autori: Maydene Fisher, Jon Ellis, Jonathan Bruce Casa Editrice: Addison-Wesley Professional ISBN: 0321173848 Java Tutorial JDBC Trial» http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html JDBC API Documentation» http://docs.oracle.com/javase/1.5.0/docs/guide/jdbc/index.html» http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/packagesummary.html

( 1 ) Driver ( bridge Tipo 1 (JDBC-ODBC» Traduce JDBC in ODBC (Open DataBase Connectivity)» Viene utilizzato un driver ODBC» JDK contiene un ponte JDBC-ODBC» E necessario configurare ODBC» Generalmente utilizzato in ambito di test ( Driver Tipo 2 (Native-API» Scritto parzialmente in java e parzialmente in codice nativo» Chiamate JDBC vengono convertite in chiamate alle API dei client Oracle, IBM DB2» E necessario installare le librerie native

( 2 ) Driver Tipo 3 (Network-Protocol Driver / MiddleWare Driver)» Fa uso di un middle tier tra le il programma chiamante e il database» Il middle-tier (application server) converte le chiamate JDBC in un protocollo DBMS-independent» Vengono poi traslate da un server nel relativo protocollo del DBMS Tipo 4 (Native-Protocol Driver / Pure Java Driver)» Chiamate JDBC vengono convertite direttamente nelle chiamate al protocollo del DBMS specifico» Scritto completamente in Java Nota E presente una lista di driver disponibili sul mercato» http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

( 3 ) Driver Type 1: JDBC-ODBC Bridge plus ODBC Driver This combination provides JDBC access via ODBC drivers. ODBC binary code -- and in many cases, database client code -- must be loaded on each client machine that uses a JDBC-ODBC Bridge. Oracle provides a JDBC-ODBC Bridge driver, which is appropriate for experimental use and for situations in which no other driver is available. Type 1 Type 2 Type 2: A native API partly Java technology-enabled driver This type of driver converts JDBC calls into calls on the client API for Oracle, Sybase, Informix, DB2, or other DBMS. Note that, like the bridge driver, this style of driver requires that some binary code be loaded on each client machine. http://www.oracle.com/technetwork/java/overview-141217.html

( 4 ) Driver Type 4: Direct-to-Database Pure Java Driver This style of driver converts JDBC calls into the network protocol used directly by DBMSs, allowing a direct call from the client machine to the DBMS server and providing a practical solution for intranet access. Type 3: Pure Java Driver for Database Middleware This style of driver translates JDBC calls into the middleware vendor's protocol, which is then translated to a DBMS protocol by a middleware server. The middleware provides connectivity to many different databases. Type 4 Type 3 http://www.oracle.com/technetwork/java/overview-141217.html

Contesto Applicativo: Applicazioni Two-tier L'applicazione Java parla direttamente alla sorgente dati» Il driver JDBC può comunicare con la particolare origine dati a cui si accede» I comandi utente sono inviati al database o altre fonti dati, ed i risultati di tali istruzioni vengono inviati all'utente Configurazione client/server: l'origine dati può essere situata su un'altra macchina (server) a cui l'utente è collegato tramite rete (client) Java Application JDBC Client machine DBMS proprietary protocol DBMS Database server

Contesto Applicativo: Applicazioni Three-tier I comandi utente vengono inviati a un "livello intermedio" dei servizi, che poi li invia all'origine dati. Questa elabora i comandi e invia i risultati al livello intermedio, che poi li invia all'utente» Il livello intermedio consente di mantenere il controllo sull'accesso e sul tipo di aggiornamenti, inoltre semplifica la distribuzione di applicazioni Java e le API JDBC sono diventate lo standard per lo sviluppo di livello intermedio Java appletor HTML browser Application Server (Java) JDBC DBMS Client machine (GUI) HTTP, RMI, CORBA, or other calls Server machine (business logic) DBMS proprietary protocol Database server

( 1 ) SQL SQL è il linguaggio standard per accedere ai DB relazionali SQL non è standardizzato» Per i tipi JDBC lo risolve introducendo un insieme generico di tipi» Per i diversi statement JDBC permette l invio di una qualsiasi istruzione SQL (i driver devono essere almeno conformi all ANSI ( Level SQL-92 Entry

( 2 ) SQL INTEGER O INT SMALLINT NUMERIC(M,N), DECIMAL(M,N) DEC(M, N) FLOAT(N) REAL DOUBLE CHARACTER(N) CHAR(N) VARCHAR(N) BOOLEAN DATE TIME TIMESTAMP BLOB CLOB Di solito intero a 32 bit Di solito intero a 16 bit Numero decimale a lunghezza fissa con m cifre totali e n cifre dopo il punto decimale Numero a virgola mobile con precisione di n cifre binarie Di solito virgola mobile a 32bit Di solito virgola mobile a 64bit Stringa di lunghezza fissa n Stringa di lunghezza variabile max n Booleano Data del calendario dipendente dall implementazione Ora del giorno dipendente dall implementazione Data e ora del giorno dipendente dall implementazione Oggetto binario large Oggetto carattere large

( 1 ) Classi e interfacce package java.sql SQLPermission <<Interface>> Statement DriverManager DriverPropertyInfo <<Interface>> Connection <<Interface>> Driver <<Interface>> PreparedStatement <<Interface>> ResultSet <<Interface>> CallableStatement

( 1 ) Classi e interfacce package java.sql <<Interface>> Statement DriverManager DriverPropertyInfo <<Interface>> Connection <<Interface>> Driver <<Interface>> PreparedStatement <<Interface>> ResultSet <<Interface>> CallableStatement

( 2 ) Classi e interfacce DriverManager facility» DriverManager: permette una connessione con un driver» Driver: fornisce le API per registrare e connettere i driver; utilizzata dalla classe DriverManager» DriverPropertyInfo: fornisce le proprietà di un ( utilizzata driver JDBC (generalmente non

( 3 ) Classi e interfacce SQL statements» Statement: utilizzata per inviare statements base SQL» PreparedStatement: utilizzata per inviare prepared statements» CallableStatement: utilizzata per invocare le stored procedure» Connection: fornisce metodi per creare statements e gestire le connessioni» ResultSet: rappresenta il risultato di una query

( 4 ) Classi e interfacce package java.sql SQLException SQLWarning BatchUpdateException DataTruncation SQLException» Lanciata dai metodi quando vi è un problema nell accesso ai dati o per altri ragioni SQLWarning» Indica un warning DataTruncation» Indica dati che potrebbero essere stati troncati BatchUpdateException» Indica che non tutti i comandi in un update batch non sono stati eseguiti con successo

( 5 ) Classi e interfacce package java.sql

( 6 ) Classi e interfacce Mapping per i tipi SQL a classi e interfacce Java» Array: mapping per SQL ARRAY» Blob: mapping per SQL BLOB» Clob: mapping per SQL CLOB» Date: mapping per SQL DATE» Ref: mapping per SQL REF» Struct: mapping per SQL STRUCT» Time: mapping per SQL TIME» Timestamp: mapping per SQL TIMESTAMP» Types: contiene costanti per i tipi SQL INT, VARCHAR, NUMBER, DATE,.

( 7 ) Classi e interfacce Custom mapping per un tipo SQL definito dall utente» SQLData» SQLInput» SQLOutput Metadata» DatabaseMetaData: fornisce informazioni sul DBMS» ResultSetMetaData: fornisce informazioni sulle colonne di un ResultSet» ParameterMetaData: fornisce informazioni sui parametri di un comando PreparedStatement

JDBC Getting start ( J )» Installa Java e JDBC» Installa il DBMS MySql 4.0.x» Download and Installa un driver mysql-connector-java-3.1.14-bin.jar (http:// ( dev.mysql.com/downloads/connector/j/3.1.html» Creazione del Database javalibrary

Database drop database javalibrary; create database javalibrary; use javalibrary; CREATE TABLE title_kind( title_kind_id mediumint(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(100) not null); CREATE TABLE title( title_id mediumint(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(255) not null, title_kind_id mediumint(10) not null, description varchar(255), author varchar(100), isbn varchar(50), constraint ttl_tik_fk foreign key(title_kind_id) references title_kind(title_kind_id));

Passi Registrare un driver Stabilire una connessione al DB Creare uno statement Eseguire l SQL Processare il risultato Eliminare gli oggetti JDBC

( 1 ) Registrare un driver Interfaccia Driver fornisce un astrazione verso il DB Viene utilizzato dal DriverManager per connettersi al DB» E lo strato di gestione all interno di JBDC che si interpone tra l utente e i drivers» Mantiene traccia dei driver che sono disponibili e gestisce le connessioni tra un DB e il relativo driver» JDBC 2.0 ha introdotto un interfaccia DataSource (javax.sql) che è un alternativa alla gestione delle sorgenti di dati JDBC utilizza il primo driver che si connette con successo ad una data URL Si possono registrare diversi driver

( 2 ) Registrare un driver Un driver viene registrato» Utilizzando il Class Loader Class.forName("acme.db.Driver"); Permette di caricare esplicitamente il driver Il driver una volta caricato si registra presso il DriverManager mediante il metodo registerdriver» Utilizzando la proprietà di sistema jdbc.drivers Sintassi: java -Djdbc.drivers=driverName[:driverName]» Istanziando esplicitamente una classe che implementa l interfaccia Driver

( 3 ) Registrare un driver Esempio 1 public class TestLoading1 { public static void main( String[] args ) { try { Class.forName("com.mysql.jdbc.Driver" ); catch ( ClassNotFoundException e ) { e.printstacktrace();

( 4 ) Registrare un driver Esempio 2 public class TestLoading2 { public static void main( String[] args ) { System.out.println( "welcome!" ); C:> java Djdbc.drivers=com.mysql.jdbc.Driver

( 5 ) Registrare un driver Esempio 3 public class TestLoading3 { public static void main( String[] args ) { try { Driver driver = new com.mysql.jdbc.nonregisteringdriver(); DriverManager.registerDriver( driver ); catch ( SQLException e ) { e.printstacktrace();

( 1 ) Stabilire una connessione al DB Esistono tre metodi nella classe DriverManager per effettuare la connessione» getconnection(string url)» getconnection(string url, java.util.properties info) Le proprietà sono dipendenti dal DBMS Contengono almeno le proprietà user e password» getconnection(string url, String user, String password)

( 2 ) Stabilire una connessione al DB Formato URL» jdbc:protocollo_secondario:altro» protocollo_secondario seleziona il driver specifico di connessione al db» altro dipende dal valore di protocollo_secondario» Esempi jdbc:mysql://localhost/javalibrary jdbc:oracle:thin:@127.0.0.1:1521:oracledb

( 3 ) Stabilire una connessione al DB Esempio public class TestConnection { private static final String DRIVER_NAME = "com.mysql.jdbc.driver"; public static void main( String[] args ) { try { Class.forName( DRIVER_NAME ); Connection connection = DriverManager.getConnection( args[ 0 ], args[ 1 ], args[ 2 ] ); catch ( ClassNotFoundException e ) { e.printstacktrace(); catch ( SQLException e ) { e.printstacktrace(); C:> java TestConnection jdbc:mysql://localhost/javalibrary root

( 1 ) Creare uno statement Un oggetto Statement è utilizzato per inviare istruzioni SQL al DB Tre tipi di oggetti statement» Statement Permette di eseguire semplici istruzioni SQL senza parametri» PreparedStatement Viene preparata una query che poi sarà utilizzata diverse volte Aumento prestazioni» CallableStatement Permette di eseguire chiamate a stored procedure

( 2 ) Creare uno statement Per creare gli statement si utilizzano i rispettivi metodi presenti all interno di Connection» Statement createstatement()» PreparedStatement preparestatement(string sql)» CallableStatement preparecall(string sql)» Esistono altri metodi per creare gli oggetti

Eseguire l SQL Interfaccia Statement» ResultSet executequery(string sql) Esegue un istruzione SQL (SELECT) e ritorna un ResultSet che identifica il risultato» int executeupdate(string sql)... Esegue un istruzione SQL (INSERT, UPDATE, DELETE ) e ritorna il numero di righe di cui è stato effettuato l update

Processare il risultato Interfaccia ResultSet» Mantiene un cursore che punta alla riga corrente dei dati» Inizialmente è posizionato prima della prima riga» Metodo boolean next() muove il cursore in avanti e ritorna false se non ci sono più righe» Default con il ResultSet non si possono modificare le righe e tornare indietro» Esempio Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery("select a, b FROM TABLE2");

Processare il risultato Per recuperare le colonne dal ResultSet vi sono dei metodi getxxx (getboolean, getlong, getstring, ) Valori possono essere recuperati» Utilizzando l indice (più efficiente e numerato da 1) oppure ( insensitive» Nome della colonna (case Driver JDBC tenta di convertire dati sottostanti con tipi di dati Java Problema con tipi del DB rispetto a tipi Java a causa della mancanza dello standard SQL JDBC risolve il problema definendo dei propri tipi mediante la classe java.sql.types

Processare il risultato String java.math.bigdecimal Boolean Integer Long Float Double byte[] java.sql.date java.sql.time java.sql.timestamp Clob Blob Array Struct Ref Java class CHAR, VARCHAR, or LONGVARCHAR NUMERIC BIT INTEGER BIGINT REAL DOUBLE BINARY, VARBINARY, or LONGVARBINARY DATE TIME TIMESTAMP CLOB BLOB ARRAY STRUCT REF JAVA_OBJECT

( 4 ) Processare il risultato http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstart/mapping.html

( 5 ) Processare il risultato http://java.sun.com/j2se/1.4.2/docs/ guide/jdbc/getstart/mapping.html

( 6 ) Processare il risultato Qualsiasi tipo di dati MySql può essere convertito in java.lang.string e qualsiasi tipi numerico può essere convertito in un qualsiasi tipo numerico di Java

Processare il risultato Esempio 1 public class TestStatement { private static final String DRIVER_NAME="com.mysql.jdbc.Driver"; private static final String SQL = "SELECT * FROM title"; public static void main( String[] args ) { try { Class.forName( DRIVER_NAME ); Connection connection = DriverManager.getConnection( args[ 0 ], args[ 1 ], args[ 2 ] ); Statement statement = connection.createstatement(); ResultSet resultset = statement.executequery( SQL );

Processare il risultato while ( resultset.next() ) { System.out.println( "ID: " + resultset.getint( "title_id" ) ); System.out.println( "Name: " + resultset.getstring( "name" ) ); System.out.println( "Title Kind ID: " + resultset.getint( "title_kind_id" ) ); System.out.println( "Description: " + resultset.getstring( "description" ) ); System.out.println( "Author: " + resultset.getstring( "author" ) ); System.out.println( "Isbn: " + resultset.getstring( "isbn" ) ); System.out.println( "-----------------------------------" ); catch ( ClassNotFoundException e ) { e.printstacktrace(); catch ( SQLException e ) { e.printstacktrace();

Processare il risultato Esempio 2 public class TestPreparedStatement { private static final String DRIVER_NAME="com.mysql.jdbc.Driver"; private static final String SQL = "SELECT * FROM title WHERE name=?"; public static void main( String[] args ) { try { Class.forName( DRIVER_NAME ); Connection connection = DriverManager.getConnection( args[ 0 ], args[ 1 ], args[ 2 ] ); PreparedStatement preparedstatement = connection.preparestatement( SQL ); preparedstatement.setstring( 1, "name"); ResultSet resultset = preparedstatement.executequery();

Processare il risultato while ( resultset.next() ) { System.out.println( "ID: " + resultset.getint( "title_id" ) ); System.out.println( "Name: " + resultset.getstring( "name" ) ); System.out.println( "Title Kind ID: " + resultset.getint( "title_kind_id" ) ); System.out.println( "Description: " + resultset.getstring( "description" ) ); System.out.println( "Author: " + resultset.getstring( "author" ) ); System.out.println( "Isbn: " + resultset.getstring( "isbn" ) ); System.out.println( "-----------------------------------" ); catch ( ClassNotFoundException e ) { e.printstacktrace(); catch ( SQLException e ) { e.printstacktrace();

( 1 ) Eliminare gli oggetti JDBC Al termine delle operazioni è necessario chiudere tutti gli oggetti coinvolti try { resultset.close(); statement.close(); connection.close(); catch (SQLException ex) { ex.printstacktrace();

Esempio ( 2 ) Eliminare gli oggetti JDBC public class TestPreparedStatementClose { private static final String DRIVER_NAME="com.mysql.jdbc.Driver"; private static final String SQL = "SELECT * FROM title WHERE name=?"; public static void main( String[] args ) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { Class.forName( DRIVER_NAME ); conn = DriverManager.getConnection( args[ 0 ], args[ 1 ], args[ 2 ] ); ps = con.preparestatement( SQL ); ps.setstring( 1, "name"); rs = ps.executequery();

( 3 ) Eliminare gli oggetti JDBC while ( rs.next() ) { System.out.println( "ID: " + rs.getint( "title_id" ) ); System.out.println( "Name: " + rs.getstring( "name" ) ); System.out.println( "Title Kind ID: " + rs.getint( "title_kind_id" ) ); System.out.println( "Description: " + rs.getstring( "description" ) ); System.out.println( "Author: " + rs.getstring( "author" ) ); System.out.println( "Isbn: " + rs.getstring( "isbn" ) ); System.out.println( "-----------------------------------" ); catch ( ClassNotFoundException e ) { e.printstacktrace(); catch ( SQLException e ) { e.printstacktrace();

( 4 ) Eliminare gli oggetti JDBC finally { if (rs!=null) { try { rs.close(); catch (SQLException e) {/*Do Nothing*/ if (ps!=null) { try { ps.close(); catch (SQLException e) {/*Do Nothing*/ if (conn!=null) { try { conn.close(); catch (SQLException e) {/*Do Nothing*/