Sommario
Giava Essendo un linguaggio multiuso, oltre alle diverse funzionalità che possiamo ottenere, ci permette anche di lavorare con la persistenza dei dati, per questo possiamo connetterci con i diversi motori di Banche dati che esistono sul mercato.UN Banca dati Può essere qualcosa di semplice come un sistema chiave-valore in un file di testo normale, così come soluzioni più complesse e moderne come quelle non relazionali, questo rende la possibilità di sviluppare diversi schemi di connessione una caratteristica obbligatoria.
JDBC sono un insieme di classi che consentono Giava stabilire connessioni con i motori di Database, questo ci permette di ottenere i risultati delle query in un oggetto chiamato Set di risultati.
Poiché ogni motore è diverso, è probabile che il Set di risultati che riceviamo è particolare ad esso, ecco perché non è conveniente per noi strutturare la nostra applicazione attorno a tale oggetto.
Per risolvere questo problema possiamo usare quello che viene chiamato a oggetto di accesso, con cui possiamo gestire le diverse forme del nostro Set di risultati rendendo la tua applicazione all'interno del nostro programma più facile da implementare e quindi lo sviluppatore ha meno problemi.
Il modello di progettazione DAOIl Oggetto di accesso ai dati o DAO È un design pattern che raccoglie quanto spiegato nel punto precedente, questo ci richiede di creare una classe di accesso alle proprietà del nostro Banca dati. Per fare questo lavoro dobbiamo fare tutto il lavoro JDBC e il controller che ci consente di connetterci con il particolare motore che desideriamo, inoltre dobbiamo eseguire l'implementazione logica che spieghiamo per evitare la dipendenza da componenti specifici che ci renderebbero solo difficile la migrazione a un motore di database diverso.
La prima cosa che dobbiamo fare per costruire una connessione JDBC è identificare quale è il motore a cui vogliamo fare la connessione e quindi ottenere le classi necessarie per detta connessione, in questo caso faremo una connessione MySQL, questo motore è leggero, gratuito e multipiattaforma, quindi possiamo installarlo sia in Windows, Linux o Mac.
Connettore / J è l'insieme delle classi offerte dal team di sviluppo di MySQL, con loro possiamo fare JDBC collaborare con questo Banche dati relazionale, per incorporarlo nel nostro progetto dobbiamo seguire i seguenti passaggi.
1- Dobbiamo scaricare anche il file corrispondente alla nostra piattaforma finestre o per altri dal sito ufficiale di MySQL Al seguente link.
INGRANDIRE
3- Ora procederemo a testare che tutto funzioni correttamente sul nostro computer, per questo creeremo un piccolo codice dove vedremo se connettore / J è stato caricato con successo nel nostro sistema, per questo utilizzeremo il seguente codice:
public class ConnectionTest {public static void main (String [] args) {try {Class c = Class.forName ("com.mysql.jdbc.Driver"); System.out.println ("Classe caricata:" + c.getName ()); } catch (ClassNotFoundException es) {System.err.println (es); }}}
4- Per eseguire questo esempio dobbiamo includere la dipendenza, si consiglia di avere il .vaso nello stesso percorso del nostro file TestConexion.java. Con questo coperto andremo a compilare il nostro file, apriamo una console e con le istruzioni javac e aggiungendo .vaso al percorso di classe in fase di esecuzione con il comando -cp Possiamo farlo, vediamo la riga di comando:
javac -cp mysql-connector-java-5.1.34-bin.jar ConnectionTest.java
5- Infine, per eseguire il nostro file, dobbiamo solo eseguire la seguente istruzione:
java -cp mysql-connector-java-5.1.34-bin.jar TestConnection
Se abbiamo un risultato come il seguente nella nostra console, possiamo iniziare a lavorare con le operazioni per Banche dati:
INGRANDIRE
CREA TABELLA SE NON ESISTE `utenti` (
`id` bigint (20) NOT NULL AUTO_INCREMENT,
`nome` varchar (255) NOT NULL,
`data` data NOT NULL,
`state` int (11) NOT NULL,
CHIAVE PRIMARIA (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 3;
INSERISCI IN VALORI `utenti` (` id`, `nome`,` data`, `stato`)
(1, 'Utente 1', '01-01-2015', 1),
(2, "Utente 2", "01-01 2015", 1);
Ora nel seguente codice di Giava ci concentreremo sullo stabilire la connessione con il Banca dati, per questo con a prova a bloccare il blocco Convalideremo che sia efficace e senza errori, quindi se la connessione è stata stabilita stamperemo un messaggio di successo, vediamo:
import java.sql.Connection; import java.sql.DriverManager; public class ConnectionTest {private static final String path = "jdbc: mysql: // localhost"; private static final String user = "nostro utente"; private static final String password = "la nostra password"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (percorso, utente, password); System.out.println ("Connessione riuscita"); } catch (eccezione e) {e.printStackTrace (); }}}
Da questo codice possiamo vedere che dobbiamo importare due librerie dal pacchetto java.sql, uno è Connessione che si occupa di gestire tutte le attività per poter comunicare con il Database e l'altro è Gestore dispositivi che è responsabile di fornire il modo in cui comunicheremo con esso. Se abbiamo seguito correttamente i passaggi, dovremmo vedere il seguente messaggio quando eseguiamo il nostro esempio nella console:
INGRANDIRE
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class ConnectionTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "nostro utente"; private static final String password = "la nostra password"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (percorso, utente, password); Query sull'istruzione = con.createStatement (); System.out.println ("Connessione riuscita"); ResultSet risultato = query.executeQuery ("SELECT * FROM utenti"); while (result.next ()) {Nome stringa = result.getString ("nome"); Stringa data = risultato.getString ("data"); System.out.println ("Nome:" + nome + "Data di registrazione:" + data); } risultato.chiudi (); query.close (); con.close (); } catch (eccezione e) {e.printStackTrace (); }}}
È importante ricordare che nel nostro attributo itinerario Lo abbiamo modificato e il nome del Banca dati chiamata test dove dobbiamo creare la nostra tabella utenti, compilare il nostro file ed eseguire, il risultato per console sarebbe come mostrato nell'immagine seguente:
INGRANDIRE
VantaggioQuesto ha diversi vantaggi, abbiamo già detto che il primo è poter usare qualcosa senza ripeterlo, ma è anche per sicurezza, poiché questo ci permette di trattare i valori che eventualmente provengono dall'input dell'utente per evitare un attacco al nostro Database, oltre a possiamo anche facilitare la leggibilità del nostro programma.
Nell'esempio seguente creeremo una query con Discorso preparato, in modo che possa essere utilizzato più volte durante il nostro programma. Vediamo il codice risultante:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.PreparedStatement; public class PreparedStatementTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "nostro utente"; private static final String password = "la nostra password"; public static void main (String [] args) {try {Connection con = DriverManager.getConnection (percorso, utente, password); query PreparedStatement = con.prepareStatement ("SELECT * FROM utenti Dove id =?;"); System.out.println ("Connessione riuscita"); query.setInt (1, 1); ResultSet risultato = query.executeQuery (); while (result.next ()) {Nome stringa = result.getString ("nome"); Stringa data = risultato.getString ("data"); System.out.println ("Nome:" + nome + "Data di registrazione:" + data); } risultato.chiudi (); query.close (); con.close (); } catch (eccezione e) {e.printStackTrace (); }}}
Notiamo che usando il metodo setInt Con l'oggetto query possiamo passare il parametro necessario per la query, con questo possiamo staccarlo dall'esecuzione della query, ottenendo così portabilità e facilità di lettura. Per finire, compiliamo ed eseguiamo il nostro programma:
INGRANDIRE