Introduzione JDBC interfaccia java.sql driver caricare i driver



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

JDBC di base. Le classi/interfacce principali di JDBC

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

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

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

JDBC. A. Bechini Accesso a DataD con Java

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

Esercitazione su JDBC

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

Java: la libreria delle classi

Laboratorio di reti II: Gestione di database lato server

Corso di Informatica Modulo T3 B2 - Database in rete

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

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

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

PROVA FINALE Ingegneria del software

Architettura MVC-2: i JavaBeans

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

Scheda 15 Accedere ai 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

Lezione 9. Applicazioni tradizionali

JDBC: Java e database.

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

JAVA JDBC. Andrea BEI

Accesso Web a Data Base

Database e reti. Piero Gallo Pasquale Sirsi

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

Programmazione Java Avanzata Spring - JDBC

Basi di Dati: Corso di laboratorio

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:

Esercitazione 4 JDBC

Accesso a Database con JDBC

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

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

Capitolo 13. Interrogare una base di dati

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

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

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

GERARCHIE RICORSIVE - SQL SERVER 2008

DATABASE.

Tecnologie di Sviluppo per il Web

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web L-A A.A Esercitazione 08 DAO e Hibernate

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

Sistemi Mobili e Wireless Android - Dati persistenti: SQLite

Introduzione ai Sistemi di Gestione di Basi di Dati XML

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

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Concetto di Funzione e Procedura METODI in Java

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Backup e Restore di un database PostgreSQL Sandro Fioravanti INFN-LNF

Algoritmi di Ricerca. Esempi di programmi Java

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

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

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

Programmazione Java Avanzata

Volumi di riferimento

Tecnologia e Applicazioni Internet 2011/12

Prova di Laboratorio di Programmazione

19. LA PROGRAMMAZIONE LATO SERVER

Visualizzazione ordini in MyShopDB

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Esercitazione sulle libpq - libreria C per PostgreSQL

Basi di Dati Esercitazione JDBC

Guida all Installazione del ProxyFatturaPA

Le Basi di Dati. Le Basi di Dati

Lezione 1 Introduzione

CONCETTO DI ANNIDAMENTO

Sviluppo di applicazioni per basi di dati

SQL Server Integration Services. Integration Services Project

PHP e MySQL. Guida scaricata da

Dispensa di database Access

I file di dati. Unità didattica D1 1

Veneto Lavoro via Ca' Marcello 67/b, Venezia-Mestre tel.: 041/

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

Introduzione ai database relazionali

Introduzione a JDBC. si inviano comandi SQL; si recuperano i risultati dei comandi.

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sviluppo Applicativi personalizzati per automatizzare le Analisi SPC

Interfaccia di base di GroupWise WebAccess

Esercitazione 01: DDL e DML di base

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

GUIDA AL PRONTUARIO MOBILE

Sistemi per la gestione di database: MySQL ( )

Lifephone. Introduzione. Database. Sito

Транскрипт:

J D B C DISPENSE

Introduzione JDBC (Java Database Connectivity) è un interfaccia completamente Java utilizzata per eseguire istruzioni SQL sui database. L'API JDBC si trova nel pacchetto java.sql; contiene poche classi concrete, è composta principalmente da interfacce indipendenti dal database. JDB è composto da due componenti principali: una implementazione delle specifiche RDBMS del Vendor, ovvero dello specifico database (mysql, oracle, etc) che è conforme alle specifiche API di java.sql. una serie di classi che il programmatore può usare per interrogare il database indipendentemente da quale specifico database si sta usando. Per il primo punto (interfacciarsi con lo specifico database) si caricano gli appositi driver che l'azienda proprietaria dello specifio tipo di database (ese: oracle) avranno sviluppato. Prima di poter fare qualsiasi operazione con un database bisogna quindi caricare i driver. Le operazioni da eseguire per utilizzare un database quindi sono: 1. caricamento driver 2. apertura connessione al database 3. esecuzione istruzione 4. elaborazione risultato 5. chiusura connessione Ovviamente i passaggi 1, 2 e 5 li farò solo una volta, non tutte le volte che devo

interrogare il database. Vediamo i singoli passaggi. Connessione Caricare la classe corrispondente allo specifico driver (che è proprio della base di dati che si vuole utilizzare): Class.forName("com.mysql.jdbc.Driver"); Quando il driver viene caricato in memoria, si registra con la classe java.sql.drivemanager come un driver per base di dati disponibile. Ottenere una connessione alla base di dati: Connection con = DriverManager.getConnection(url,user,psw) Il valore di ritorno è un oggetto che implementa l'interfaccia java.sql.connection; La base di dati è identificata da un URL JDBC in un modo che è specifico del driver; individuare la base di dati; Durante la chiamata, l'oggetto DriverManager chiede a tutti i driver registrati se riconoscono l'url e usa quello che gli risponde di sì per costruire l'oggetto connessione. Passo l'username e la password per accedere al database Esecuzione query SQL Bisogna prima di tutto creare un oggetto Statement (classe: java.sql.statement) tramite il metodo createstatement() dell'interfaccia Connection: Statement stmt = con.createstatement(); per eseguire una query che produce dati, si usa il metodo executequery(string query) dell'oggetto Statement; i risultati vanno salvati in un oggetto ResultSet: ResultSet rs = stmt.executequery("select * FROM..."); ResultSet prende i dati dallo Statement che l'ha generato, quindi se lo Statement viene chiuso o usato per un'altra query, vengono automaticamente chiusi anche tutti gli oggetti ResultSet ad esso collegati. Per consultare il ResultSet: while(rs.next()) { String s = rs.getstring("nome attrib ); int i = rs.getint("nome attrib );... Chiudere la Connessione con il Database Per chiudere la connessione con il database utilizzo: con.close();

Vediamo un Esempio: import java.sql.*; public class ProvaJDBC { public static void main (String args[]){ try { String driver = "sun.jdbc.odbc.jdbcodbcdriver"; Class.forName(driver); String url = "jdbc:odbc:mydatasource"; Connection con = DriverManager.getConnection(url, "username", "password"); Statement cmd = con.createstatement(); String query = "SELECT * FROM nometabella"; ResultSet res = cmd.executequery(query); while (res.next()) { System.out.println(res.getString("nomeColonna1")); System.out.println(res.getString("nomeColonna2")); res.close(); // chiudere le risorse DB è obbligatorio cmd.close(); con.close(); catch (SQLException e){ e.printstacktrace(); catch (ClassNotFoundException e){ e.printstacktrace(); Con poche righe di codice, si è creati una connesisone ad un database ODBC / JDBC nel server, indipendentemente dal tipo di database, o dalla piattaforma. Nella connessione passiamo i tre dati essenziali: il nome del database, un username e la sua password. Grazie al metodo executequery() dell'oggetto Statement eseguiamo l'istruzione SQL impostata precedentemente in una Stringa. Infine con un ciclo while collegato al metodo next() del ResultSet (tabella calcolata dalla Query eseguita) stampiamo a schermo i valori delle prime due colonne. Ricordarsi sempre di utilizzare i metodi close() per ogni oggetto aperto, in questo caso per il ResultSet, per la Statement e per la Connection; infatti molti programmatori sanno che quando si lavora con i database è indispensabile liberare la memoria, anche per avere dei processi più veloci.

Operazioni di Aggiornamento Ovviamente devo poter eseguire anche query che non ritornano risultati, ovvero inserimento, modifca ed eliminazione di elementi da una tabella. L oggetto ResultSet, come si può intuire, non è più necessario visto che l operazione non restituisce più risultati. È sufficiente richiamare il metodo executeupdate() in Statement permette di effettuare operazioni che non tornano risultati ma solo il conteggio delle righe modificate. int count = stmt.executeupdate( stringa query ); Se non si sa se verranno o meno restituiti dei dati, si può usare execute() (sempre in Statement): torna un boolean true se è stato prodotto uno o più ResultSet, false se è stato tornato solo un conteggio: boolean b = stmt.execute(sql); A questo punto si possono usare i metodi getresultset() e getupdatecount(), il primo per ottenere il ResultSet in caso excecute abbia ritornato ture, il secondo per ottenere il numero di righe modificate. NB: né GetResultSet() né getupdatecount() dovrebbero venir chiamate più di una volta per richiesta.