• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Java - Accesso ai database con JDBC

Mi.ke

Utente Master
Autore del topic
16 Giugno 2011
2.857
60
Miglior risposta
0
Salve,
Con questa guida vorrei introdurvi all uso del database standard di microsoft e quindi all'interazione di esso fra i software applicativi.

A. Driver per la connessione al database.

Il driver per database è un programma standard che consente di trasferire i dati presenti in un database: quando un programma vuole accendere al database creato con un altro applicativo, deve utilizzare il driver per quel database.


ODBC (Open database connectivity) è l'interfaccia software standard di Windows che consente ai programmatori di scrivere in modo semplice le applicazioni per connettersi ai database e ritrovare i dati in essi contenuti. I database possono essere creati con prodotti DBMS diversi: ODBC possiede i driver software per database ed evita quindi di dover scrivere un programma diverso per ciascun tipo di database.


Per visualizzare le proprietà di ODBC in Windows e per fissarne le impostazioni, occorre fare le seguenti operazioni:

1. Nel Pannello di controllo scegliere SIstema e sicurezza, Strumenti di amministrazione e infine fare doppio click sull'icona Origine dati(ODBC);

2. Fare click sulla scheda DSN utente, DSN di sistema o DSN su file, a seconda del tipo di origine dati;

3. Per modificare la definizione di un origine dati esistente:
-selezionare l'origine dati dall'elenco,
-scegliere il pulsante Configura,
-Completare le finestre di dialogo.

4. Per definire una nuova origine dati per un driver installato, nella finestra iniziale, scegliere il pulsante Aggiungi; nella nuova finestra che si apre( Crea nuova origine dati) scegliere il driver adatto per il database e poi fare click sul pulsante Fine.

La sigla DSN(Data Source Name) indica il nome della sorgente di dati; è il nome che identifica il database quando viene utilizzato da un applicazione WEb in Internet o in una Intranet aziendale.
L'origine dei dati puo' essere:
-DSN utente (Per fissare una sorgente di dati per un utente specifico);
DSN (Per le sorgenti di dati disponibili per piu utenti che accedono allo stesso computer di rete;
DSN su file (Per configurare un DSN come file con estensione .dsn che può essere condifiviso da più utenti che dispongono dello stesso driver installato.

B. La teconologia JDBC

JDBC (Java database Connectivity) mette a disposizione una libreria di classi Java per interfacciare l'accesso ai database che usano il linguaggio standard SQL, con l'obbiettivo di fornire un'uniformità di accesso ai prodotti DBMS relazionali.
Attraverso JDBC e possibile richiamare comandi SQL direttamente, fornendo la base per costruire applicazioni per l'accesso ai database.

Secondo la terminologia di Java il software JDBC è classificato come una API (Application Programming Interface), perché fornisce un interfaccia analoga a quella offerta dall'API per i sistemi operativi di adesso: in questo caso fornisce i driver ai database per la connessione, l'esecuzione dei comandi SQL e le transazioni verso i database gestiti con più diffusi prodotti DBMS.
L'API JDBC è contenuta nel JDK di Oracle.
JDBC comprende anche il JDBC-ODBC Bridge, un ponte verso i driver standard ODBC, che rende possibile la connessione ai database creati con prodotti DBMS molto diffusi, tra i quali Microsoft Access.

Le operazioni di modifica e domanda possono essere eseguite su un database locale utilizzando applicazioni Java oppure sul database di un server di rete, usando le tecnologie web.

I programmi che usano JDBC devono specificare l'uso del package java.sql del linguaggio Java e quindi devono contenere l'istruzione:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

La classe DriverManager tiene traccia dei driver disponibili e gestisce stabilendo le connessioni tra un driver e database.
Un programmatore carica il driver esplicitandolo con il comando:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

es:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
I comandi e i nomi delle classi sono case-sensitive, quindi attenzione alla distinzione tra minuscole e maiuscole!

La classe indicata come paramentro contiene un driver fornito con JDK per accedere ai database che utilizzano lo standard ODBC ( tra cui ACCESS) e quindi è in grado di covertire le richieste al DBMS dal formato JDBC a quello ODBC.
E' buona norma inserire la gestione delle eccezioni nella fase di caricamento del driver utilizzando la seguente struttura:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

L'eccessione CLassNotFoundException viene rilevata se non è stata trovata la classe del driver.
Usando il metodo getMessage() si ottiene una descrizione completa dell'eccezione.

Il programma deve poi richiedere alla classe DriverManager di creare la connessione a un database specifico con Nome del dtabaase, ed eventualmente Username e password per l'autenticazione ad esso.
Il nome del database è specificato all'interno di una stringa che contiene tre informazioni:
-protocollo
-sottoprotocollo
-nome del database secondo il formato previsto dal driver.
ES:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Qui viene indicato il protocollo jdbc, il sottoprotocollo odbc, e il nome db1.

La stringa viene indicata come tipo URL di JDBC perché richiama il concetto di indirizzo Internet: in effetti identifica il database attraverso il protocollo jdbc, cosi come un browser distingue un indirizzo internet con i protocolli http e ftp.

Il drivermanager controlla che ci sia un driver disponibile e che sia in grado di gestire la richiesta di connessione; quando lo trova può effettuale la connessione, con l'istruzione:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

L'oggetto Connection è l'oggetto restituito dal metodono getConnection della classe DriverManager.
Se non ci sono stati fissati username e password, l'istruzione viene usata nello stesso formato ma con questi ultimi campi vuoti:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

La connessione rappresenta una sessione di lavoro con uno specifico database: all'interno di una connessione vengono eseguiti i comandi SQL e si ottengono i risultati con i dati richiesti.

C. Manipolazione dei dati

Dopo aver stabilito la connessione, si possono inviare al database i comandi SQL.
Per far questo, prima si predispone l'istruzione SQL in una stringa, per esempio:
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Poi si predispone il comando JDBC con il metodo createStatement che crea un istanza della classe Statement.

Per esempio, l'istruzione seguente usa la connessione per costruire un comando SQL da inviare successivamente al database:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
I comandi SQL sono poi attivati con due principali metodi applicati allo statement:

-metodo executeUpdate per i comandi SQL di inserimento, aggiornamento e cancellazione. Si usa anche per i comandi SQL relativi alla creazione e la cancellazione di una tabella e anche la modifica di quest'ultima.
-metodo executeQuery per le interrogazioni.

Il primo metodo restituisce il numero di righe che sono state sottoposte all'operazione di manipolazione delle tabelle, il secondo metodo restituisce un inseme di risultati (ResultSet) contenente le righe della tabella che soddisfano la condizione specificata all'interno dell'interrogazione SQL.

La gestione delle eccezioni per l'accesso al database tramite i comandi SQL viene gestita con una struttura come la seguente:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

D. Interrogazioni

Le interrogazioni al database vengono eseguite tramite il metodo executeQuery.
Per esempio, per effettuare una priezione della Tabella1 sulle colonne a,b,c occorre scrivere :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

oppure (stessa cosa):
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Il valore di ritorno è un singolo ResultSet, cioè un insieme di risultati, contente le righe della tabella che soddisfano la condizione richiesta nell'interrogazione SQL. Il risultato di una Select su una tabella nei database infatti è a sua volta una tabella formata dalle righe selezionate e dalle colonne scelte.
PEr scorrere questa tabella si deve far riferimento a un puntatore che indica la riga della tabella. (come un array).

Dopo l'esecuzione del comando executeQuery, il puntatore è automaticamente posizionato sulla prima riga del ResultSet.
Per muoversi sulle righe successive, si puo' usare il metodo next().


Ok.
Per ora è tutto, spero questa guida vi sia utile e di vostro gradimento.
Per qualsiasi cosa non esitate a contattarmi via MP.
:bye: