Nella maggior parte delle applicazioni che troverà, un database apparirà come fonte di informazione.jdbc ci consentirà di accedere ai database (BD) da Java. Congiunto non è necessario scrivere diversi programmi per diversi BD, ma un singolo programma serve ad accedere a BD di distinto. Anche, possiamo accedere più di un BD di distinzioni (Oracle, Access, MySQL, ecc.) Nella stessa applicazione. Possiamo pensare a JDBC come il ponte tra un database e il nostro programma Java. Un semplice esempio può essere un’applet che ha campionato le informazioni contenute in un database. L’applet utilizzerà JDBC per ottenere tali dati.
Lo schema da seguire in un programma che utilizza JDBC è il seguente:
Un programma Java che utilizza JDBC è necessario prima stabilire una connessione con SGBD. Per effettuare una tale connessione, useremo un driver specifico per ogni SGBD mentre stabiliamo. Una volta stabilita la connessione e non possiamo non nominare il BD con qualsiasi comando SQL (selezionare, aggiornare, creare, ecc.). Il risultato di un comando Select è un oggetto LacLase RistoranteSet, che contiene i dati che restituiscono la query. Abbiamo metodi protettivi per gestire le signore restituite. Possiamo anche eseguire qualsiasi mezzo in SQL (creazione di tabelle, Gestione Deseare, ecc.).
Per eseguire questi Operazioni Avremo bisogno di avere un SGBD (System Manager di database) e un’unità DriverSpecific per poter accedere a questo SGBD. Utilizzeremo SGBD: MySQL (disponibile per Windows e Linux, Libredistribution) e Postgres (solo per Linux, distribuzione gratuita).
Accesso driver
driver potrai accedere Ogni SGBD non fa parte della ladistribution di Java, quindi dovremmo ottenerli posizionati. Perché utilizzare un conducente?. Problema di Elprincipal che può essere considerato è che ogni SGBD ha la propria API (la maggior parte della maggior parte della maggior parte dei proprietari), quindi un aumento della SGBD implica una modifica del nostro codice. Sicolocammos Uno strato intermedio, possiamo astrarre la connettività, dal talform che usiamo un oggetto per la connessione e Eldriver è responsabile della traduzione della chiamata all’API. L’autista simpatizzerà le aziende stesse che producono la SGBD.
Tipi di driver
C’è uno standard stabilito che divide i driver a quattro mani:
- tipo 1: JDBC-ODBC Bridge. ODBC (Apri connettività del database) è stato creato per fornire una connessione ai database in Microsoft Windows. ODBC consente l’accesso ai database da diversi linguaggi di programmazione, come C e Cobol. Il bridge JDBC-ODBC consente di collegare Java con qualsiasi database disponibile in ODBC. L’uso di questo tipo di driver non è consigliato quando dobbiamo accedere ai database ad alte prestazioni, poiché le funzionalità sono limitate a quelle che il marchio ODBC. Ogni cliente deve avere il driver installato. J2SE include questo driver nella sua versione Windows e Solaris.
- tipo 2: parte Java, part driver nativo. È una combinazione di implementazione Java e API nativa per l’accesso al database. Questo tipo di driver è più veloce del precedente, perché il passaggio non viene eseguito dallo strato ODBC. Le chiamate JDBC vengono tradotte in chiamate specifiche dall’API del database. Ogni cliente deve avere il driver installato. Ha meno prestazioni rispetto ai seguenti due e non possono essere utilizzate su Internet, dal momento che hai bisogno dell’API localmente.
- Tipo 3: Accesso al database server intermedio.Questo tipo di driverPortionptions un’astrazione della connessione. Il client SENESCute al SGBD da un componente server intermedio, che funge da non-portiere per più server. Il vantaggio di questo tipo di detrazione è il livello di astrazione. Il server delle applicazioni weblogic incorpora questo tipo di driver.
- tipo 4: driver Java. Questo è il più diretto. LLALLAMADA JDBC è tradotto in una chiamata di rete al database, ai sinintermediari. Fornire prestazioni uguali. La maggior parte delle SGBD fornisce driver di tipo umido.
Installazione dei driver
La distribuzione JDBC incorpora il Driver per il ponte JDBC-ODBC che ci consente di accedere a qualsiasi BD gestito con ODBC. Per MySQL, dobbiamo scaricare e installare SGBD e il driver, che può essere ottenuto all’indirizzo http://dev.mysql.com/doc/mysql/en/Java_Connector.html.Il driver postgre è ottenuto in http://jdbc.postgresql.org
Per installare il driver, l’unica cosa che dovremmo fare per annullare il file JAR che lo contiene nel classpath. Ad esempio, per mysql:
export CLASSPATH=$CLASSPATH: /directorio-donde-este/mysql-connector-java-3.0.15-ga-bin.jar
Con il driver installato, possiamo caricarlo dalla nostra applicazione semplicemente caricando dinamicamente la classe al conducente:
Class.forName("com.mysql.jdbc.Driver");
Il driver JDBC-ODBC è stato caricato come mostrato di seguito:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
e allo stesso modo per i postgres :
Class.forName("org.postgresql.Driver");
Il carico del driver deve sempre essere fatto prima di disconnettersi con il BD.
Come abbiamo visto in precedenza, potrebbero esserci diversi tipi di derivi per lo stesso database. Ad esempio, un BD su mysqlpow per accedere a ODBC o attraverso il proprio autista. Potremmo pensare che la soluzione più semplice utilizzare ODBC per tutte le connessioni a SGBD. Tuttavia, a seconda della complessità dell’applicazione Adsarrol, questo potrebbe darci problemi. Determinato operazioni SGBDPermite (transazioni, miglioramento delle prestazioni, scabilità, ecc.) Riduzione rendendo la connessione attraverso il driver ODBC. Ecco perché è preferibile utilizzare Decriver specifici per la SGBD in questione.
L’esempio più leggero dei problemi nell’uso dei driver è con le applet. Quando utilizziamo l’accesso ai database viaJDBC da un’applet, dobbiamo tenere presente che l’appletse viene eseguito sul computer client, quindi se BD è ospitato sul nostro server dovrai stabilire una connessione remota. Qui troviamo il problema della quesi L’applet è visibile da Internet, è molto probabile che Elpurto in cui si ascolti il server di database possa essere tagliato da un firewall, quindi l’accesso dall’esterno non sarebbe possibile.
L’uso del bridge JDBC-ODBC non è consigliato nelle applet, in quanto richiede che ciascun client abbia l’origine dati appropriata configurata sulla sua macchina. Questo può controllarlo nel Casode una intranet, ma nel caso di Internet sarà meglio utilizzare altri metodi per la connessione.
Per quanto riguarda le eccezioni, dobbiamo catturare l’eccezione SQLExceptionNeen quasi tutte le operazioni in cui è visto coinvolto, oggetto JDBC.
Connessione alla BD
Una volta caricato il driver appropriato per il nostro SGBD, dobbiamo stabilire la connessione con il BD. Per questo utilizzeremo il metodo successivo:
Connection con = DriverManager.getConnection(url);Connection con = DriverManager.getConnection(url, login, password);
La connessione al BD è incapsulata in un oggetto di connessione. Per la sua creazione dobbiamo fornire l’URL BDY, Se il BD è protetto da password, la password loginy per accedervi. Il formato dell’URLVARARY Secondo il conducente che utilizziamo. Tuttavia, tutti gli URL avranno il seguente modo generale: JDBC: < subprotocol >: < Nome >, con sottoprotocollo che indica il tipo di SGBD e con nome denominato del BD e fornendo ulteriori informazioni per la connessione.
Per connettersi a una sorgente ODBC del nome BD, ad esempio, useremo il seguente URL:
Connection con = DriverManager.getConnection("jdbc:odbc:bd");
Nel caso di MySQL, se vogliamo connettersi a un BD di nome BDalo sulla macchina locale (localhost) e con password di Migial dell’utente M ++ 24, nel seguente modo:
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/bd", "miguel", "m++24");
Nel caso di Postgres (nota che abbiamo indicato una porta di deconnessione, il 5432):
possiamo eseguire il debug della connessione e determinare Cosa chiamato JDBC. Per questo faremo uso di un paio di demétodos che incorporano Drivermanager. Di seguito, si indica che le operazioni che eseguono JDBC saranno indicate dall’uscita standard:
DriverManager.setLogWriter(new PrintWriter(System.out, true));
Una volta che questa chiamata può essere visualizzata anche usando :
DriverManager.println("Esto es un mensaje");