Java DataBase Connectivity: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Fix link
Aggiornamento Collegamenti esterni che non erano più validi
 
(8 versioni intermedie di 8 utenti non mostrate)
Riga 1:
{{U|verso=da|pagina=JDBC (API nativa)|multi1=JDBC (protocollo di rete)|multi2=JDBC (protocollo nativo)|multi3=JDBC-ODBC Bridge|argomento=informatica|data=agosto 2024}}
In [[informatica]] '''JDBC''' (''Java DataBase Connectivity'')<ref>[http://java.sun.com/javase/technologies/database/ Java SE Technologies - Database<!-- Titolo generato automaticamente -->]</ref>, è un connettore (''driver'') per [[database]] che consente l'accesso e la gestione della [[persistenza (informatica)|persistenza]] dei dati sulle basi di dati da qualsiasi [[programma (informatica)|programma]] scritto con il [[linguaggio di programmazione Java]], indipendentemente dal tipo di [[DBMS]] utilizzato. È costituito da un'[[Application programming interface|API]] [[object oriented]] orientata ai [[database relazionali]], raggruppata nel [[package (Java)|package]] ''java.sql'', che serve ai [[client]] per connettersi a un [[database]] fornendo i [[metodo (informatica)|metodi]] per interrogare e modificare i dati.
 
In [[informatica]] '''JDBC''' (''Java DataBase Connectivity'')<ref>[http://java.sun.com/javase/technologies/database/ Java SE Technologies - Database<!-- Titolo generato automaticamente -->]</ref>, è un connettore (''e un driver'') per [[database]] che consente l'accesso e la gestione della [[persistenza (informatica)|persistenza]] dei dati sulle basi di dati da qualsiasi [[programma (informatica)|programma]] scritto con il [[linguaggio di programmazione Java]], indipendentemente dal tipo di [[DBMS]] utilizzato. È costituito da un'[[Application programming interface|API]] [[object oriented]] orientata ai [[database relazionali]], raggruppata nel [[package (Java)|package]] ''java.sql'', che serve ai [[client]] per connettersi a un [[database]] fornendo i [[metodo (informatica)|metodi]] per interrogare e modificare i dati.
 
La [[piattaforma (informatica)|piattaforma]] [[Java 2 Platform, Standard Edition|Java 2 Standard Edition]] contiene le API JDBC, insieme all'implementazione di un [[JDBC-ODBC Bridge|bridge JDBC-ODBC]], che permette di connettersi a database relazionali che supportino [[ODBC]], che è in codice nativo e non in Java. Tipicamente ciascun DB ha il suo specifico driver JDBC per interfacciarsi con l'applicazione. Spesso i [[framework]] di persistenza in ambito Java (es. [[Hibernate]]) nella loro implementazione a più alto livello si interfacciano a più basso livello proprio con uno strato software JDBC.
Riga 8 ⟶ 10:
== Tipi di driver ==
 
Esistono driver free e commerciali per la maggior parte dei [[server]] di database relazionali. I driver possono essere di quattro tipi:
 
* [[JDBC-ODBC Bridge|Tipo 1]], il JDBC-ODBC Bridge
Riga 27 ⟶ 29:
I comandi di scrittura come INSERT, UPDATE e DELETE restituiscono un valore che indica quante righe sono state coinvolte (inserite, modificate, cancellate) nell'istruzione. Essi non restituiscono altre informazioni.
 
Le interrogazioni ([[query]]) restituiscono un result set (classe ''ResultSet''). È possibile spostarsi nel result set riga per riga (tramite il metodo ''next()''). Si può accedere alle colonne di ogni singola riga chiamandole per nome o per numero. Il result set può essere costituito da un numero qualsiasi di righe. Esso comprende dei [[Metadato|metadati]] che indicano il nome, il tipo e le dimensioni delle colonne.
 
Esiste un'estensione di JDBC che permette, tra le altre cose, l'uso di result set scorribili e di [[Cursore (basi di dati)|cursori]] [[lato client]]. Si veda la [http://java.sun.com/j2se/1.4.2/docs/api/ documentazione] di [http://www.sun.com/ Sun Microsystems] per maggiori informazioni.
 
=== Le eccezioni ===
Riga 38 ⟶ 40:
 
Il metodo Class.forName() carica la classe del driver JDBC. La linea seguente carica il driver per ''mioDbms'' nell'applicazione.
<sourcesyntaxhighlight lang=java>
Class.forName( "com.mioDbms.mioDriver" );
</syntaxhighlight>
</source>
Poi, il metodo DriverManager.getConnection() crea una connessione.
<sourcesyntaxhighlight lang=java>
Connection conn = DriverManager.getConnection(
"jdbc:mioDbms:altri dati utili per il driver",
"mioLogin",
"miaPassword" );
</syntaxhighlight>
</source>
La stringa da utilizzare dipende dal driver JDBC che useremo. Inizia sempre con "jdbc:", il resto varia a seconda del prodotto scelto. Una volta stabilita la connessione, occorre passare una istruzione.
<sourcesyntaxhighlight lang=java>
Statement stmt = conn.createStatement();
stmt.executeUpdate( "INSERT INTO miaTabella( nome ) VALUES ( 'andrea' ) " );
</syntaxhighlight>
</source>
I dati vengono prelevati dal database col classico meccanismo delle query. L'esempio sottostante mostra come creare ed eseguire un'interrogazione:
<sourcesyntaxhighlight lang=java>
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery( "SELECT * FROM miaTabella" );
Riga 68 ⟶ 70:
rs.close();
stmt.close();
</syntaxhighlight>
</source>
È raro, però, che un [[programmatore]] Java scriva codice in questo stile. Il modo più diffuso è inserire la logica del database in una classe differente e passare le stringhe SQL già elaborate (magari derivanti anch'esse da un'altra classe) e la connessione ai metodi che ne hanno bisogno.
 
Un esempio di Prepared Statement. Si utilizza la connessione dell'esempio precedente.
<sourcesyntaxhighlight lang=java>
try {
Riga 101 ⟶ 103:
// gestione delle eccezioni
}
</syntaxhighlight>
</source>
'''Seguono alcuni esempi di conversioni tra il DBMS e Java.'''
{| BORDER CELLSPACING="0" CELLPADDING="3"
Riga 189 ⟶ 191:
 
Per essere sicuri che una connessione sia chiusa correttamente, anche in caso di eccezione, conviene utilizzare la ''finally''. Inoltre bisogna prestare particolare attenzione a non sollevare ulteriori eccezioni nel blocco finally:
<sourcesyntaxhighlight lang=java>
Connection con=null;
try {
Riga 200 ⟶ 202:
if (con != null) con.close();
}
</syntaxhighlight>
</source>
 
==Note==
Riga 216 ⟶ 218:
== Collegamenti esterni ==
 
*{{cita web|httphttps://javadocs.sunoracle.com/docs/booksjavase/tutorial/post1.0jdbc/whatsnew/jdbcindex.html|SunTrail: tutorialJDBC Database Access|lingua=en}}
*{{cita web|httphttps://javadocs.sunoracle.com/j2seen/1.4.1java/javase/21/docs/api/java.sql/java/sql/package-summary.html|Sintassijava.sql delle(Java APISE in21 Java& 2JDK 1.4.121)|lingua=en}}
*{{cita web|httphttps://javawww.sunoracle.com/developertechnical-resources/technicalArticlesarticles/javase/Database/dukesbakery/dbaccessor.html|Duke's Bakery -DBAccessor: A JDBC Order EntryWrapper PrototypePackage|lingua=en}}
*{{cita web|httphttps://java-source.sun.comnet/developer/technicalArticles//Database/dbaccessoropen-source/database-engines|DBAccessor:Open ASource Database JDBCEngines Wrapperin PackageJava|lingua=en}}
*{{cita web|http://java-source.net/open-source/database-engines|List of Java Open Source Databases with JDBC drivers|lingua=en}}
 
{{Controllo di autorità}}
{{Portale|Informatica}}
 
[[Categoria:Java]]
[[Categoria:Piattaforma Java]]
[[Categoria:SoftwareDatabase permanagement basi di datisystem]]