Java DataBase Connectivity

In informatica JDBC (Java DataBase Connectivity)[1], è un connettore e un driver per database che consente l'accesso e la gestione della persistenza dei dati sulle basi di dati da qualsiasi programma scritto con il linguaggio di programmazione Java, indipendentemente dal tipo di DBMS utilizzato. È costituito da un'API object oriented orientata ai database relazionali, raggruppata nel package java.sql, che serve ai client per connettersi a un database fornendo i metodi per interrogare e modificare i dati.

La piattaforma Java 2 Standard Edition contiene le API JDBC, insieme all'implementazione di un 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.

Architettura

L'architettura di JDBC, così come quella di ODBC, prevede l'utilizzo di un “driver manager”, che espone alle applicazioni un insieme di interfacce standard e si occupa di caricare a “run-time” i driver opportuni per “pilotare” gli specifici DBMS. Le applicazioni Java utilizzano le "JDBC API" per parlare con il JDBC driver manager, mentre il driver manager usa le JDBC driver API per parlare con i singoli driver che pilotano i DBMS specifici. Esiste un driver particolare, il "JDBC-ODBC Bridge", che consente di interfacciarsi con qualsiasi driver ODBC in ambiente Windows.

Tipi di driver

Esistono driver free e commerciali per la maggior parte dei server di database relazionali. I driver possono essere di quattro tipi:

Panoramica dell'API

JDBC ammette che esistano diverse implementazioni e vengano utilizzate dalla stessa applicazione. L'API fornisce un meccanismo che carica dinamicamente i driver appropriati e li registra nel JDBC Driver Manager. Esso funge da fabbrica di connessioni.

Le connessioni JDBC supportano la creazione e l'esecuzione delle istruzioni. Esse possono essere comandi SQL come INSERT, UPDATE, DELETE, interrogazioni come SELECT o chiamate a stored procedure. I tipi di istruzioni supportati sono:

  • Statement - l'istruzione viene inviata al database di volta in volta;
  • Prepared Statement - l'istruzione viene compilata una sola volta, in modo che le chiamate successive siano più efficienti;
  • Callable Statement - usati per chiamare le stored procedure.

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 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 cursori lato client. Si veda la documentazione di Sun Microsystems per maggiori informazioni.

Le eccezioni

Tutti i metodi delle API JDBC possono lanciare eccezioni, in quanto la connessione al DBMS in ogni momento può subire una interruzione o comunque si possono verificare errori nell'esecuzione dei comandi SQL. Tutte le eccezioni di JDBC derivano dalla classe SQLException e possono anche essere concatenate tra loro più eccezioni diverse. Ogni eccezione contiene un messaggio descrittivo, una stringa contenente lo stato SQL (conforme a quanto indicato nella specifica XOPEN SQL) e un intero contenente un codice errore addizionale specifico per il particolare driver o sorgente utilizzati.

Esempi

Il metodo Class.forName() carica la classe del driver JDBC. La linea seguente carica il driver per mioDbms nell'applicazione.

 Class.forName( "com.mioDbms.mioDriver" );

Poi, il metodo DriverManager.getConnection() crea una connessione.

 Connection conn = DriverManager.getConnection( 
     "jdbc:mioDbms:altri dati utili per il driver",
     "mioLogin",
     "miaPassword" );

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.

 Statement stmt = conn.createStatement();
 stmt.executeUpdate( "INSERT INTO miaTabella( nome ) VALUES ( 'andrea' ) " );

I dati vengono prelevati dal database col classico meccanismo delle query. L'esempio sottostante mostra come creare ed eseguire un'interrogazione:

 Statement stmt = conn.createStatement();
 ResultSet rs = stmt.executeQuery( "SELECT * FROM miaTabella" );
 while ( rs.next() ) {
    int numeroColonne = rs.getMetaData().getColumnCount();
    for ( int i = 1 ; i <= numeroColonne ; i++ ) {
       // I numeri di colonna iniziano da 1.
       // Vi sono diversi metodi che convertono il valore di una colonna in un certo tipo.
       // Vedi la documentazione per una lista delle conversioni valide.
       System.out.println( "COLONNA " + i + " = " + rs.getObject(i) );
    }
 }
 rs.close();
 stmt.close();

È 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.

 try {
   
    ResultSet rs;
    PreparedStatement ps = conn.prepareStatement( 
             "SELECT i.*, j.* FROM Omega i, Zappa j WHERE i = ? AND j = ?" );
    // Nel prepared statement ps, i punti di domanda denotano le variabili in input,
    // che possono essere passate attraverso una lista di parametri, per esempio.
 
    // Il codice seguente sostituisce i punti di domanda con stringhe o interi.
    // Il primo parametro indica la posizione in cui il valore va inserito, 
    // il secondo parametro è il valore da inserire.
    ps.setString(1, "Poor Yorick");
    ps.setInt(2, 8008);
 
    // Il ResultSet rs riceve la risposta del database.
    rs = ps.executeQuery();
    while ( rs.next() ) {
       int numeroColonne = rs.getMetaData().getColumnCount();
        for ( int i = 1 ; i <= numeroColonne ; i++ ) {
           System.out.println( "COLONNA " + i + " = " + rs.getObject(i) );
     }
 
    rs.close();
    ps.close();
   
 } catch (SQLException e) {
    // gestione delle eccezioni
 }

Seguono alcuni esempi di conversioni tra il DBMS e Java.

Tipi Oracle Metodi Java
CHAR 
setString()
VARCHAR2 
setString()
LONG 
setString() 
NUMBER 
setBigDecimal()
setBoolean() 
setByte() 
setShort() 
setInt() 
setLong() 
setFloat() 
setDouble()
INTEGER setInt()
FLOAT setDouble() 
CLOB setClob() 
BLOB setBlob() 
RAW
setBytes()
LONGRAW 
setBytes() 
DATE 
setDate() 
setTime() 
setTimestamp() 

Chiusura delle connessioni

Il rilascio delle risorse allocate durante le operazioni su database, in particolare l'oggetto connection, è particolarmente critica, in quanto il numero totale delle connessioni disponibili è limitato e normalmente la connessione al DB non viene rilasciata automaticamente quando non è più utilizzata.

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:

  Connection con=null;
  try {
    con = DriverManager.getConnection ( URL, “”, “”);
    // utilizzo la connessione
    ...
  } catch(Exception e){
    ...
  } finally {
    if (con != null) con.close();
  }

Note

Voci correlate

Altri progetti

Collegamenti esterni

Controllo di autoritàVIAF (EN9154440149035342893 · BNF (FRcb14517406n (data)
  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica

Read other articles:

Painting by Rembrandt (c. 1665‒1669) You can help expand this article with text translated from the corresponding article in Dutch. (January 2023) Click [show] for important translation instructions. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated text into the English Wikipedia. Do not transla...

 

2015 San Antonio mayoral election ← 2013 May 9, 2015 (first round)June 13, 2015 (runoff) 2017 → Turnout14.12% (first round)   Candidate Ivy Taylor Leticia Van de Putte First round 24,24528.40% 25,98230.43% Runoff 50,66251.70% 47,331 48.30%   Candidate Mike Villarreal Tommy Adkisson First round 22,24626.06% 8,3449.77% Runoff Eliminated Eliminated Mayor before election Ivy Taylor[a] Elected Mayor Ivy Taylor Elections in Texas Federal government Presidenti...

 

ألعاب بارالمبية صيفية 1992 برشلونة ومدريد، إسبانيا الدول المشاركة 82 الرياضيون المشاركون 3020 المسابقات 487، في 75 رياضة انطلاق الألعاب 3 سبتمبر المفتتح الرسمي الملكة صوفيا الملعب ستاد لويس كومبانيس الأولومبي الاختتام 15 سبتمبر الموقع الرسمي الموقع الرسمي  الشعلة الأولمبية أ...

1st IPC Swimming European ChampionshipsDate(s)18 – 24 OctoberVenue(s)LaugardalslaugNations participating37Athletes participating6502011 Berlin → The 2009 IPC Swimming European Championships was an international swimming competition. It was held in Reykjavik, Iceland and ran from 18 to 24 October. Around 650 athletes from 37 different countries attended.[1] Great Britain finished top of the medal tables with 39 golds and 94 medals, both greater than any other country.[2]...

 

У Вікіпедії є статті про інші географічні об’єкти з назвою Еллсворт. Селище Еллсвортангл. Ellsworth Координати 45°09′56″ пн. ш. 85°14′46″ зх. д. / 45.1655555555837722° пн. ш. 85.24611111113878792° зх. д. / 45.1655555555837722; -85.24611111113878792Координати: 45°09′56″ пн. ш. 85°14′46″ 

 

جامعة الزهراوي الدولية لعلوم الصحة بالرباط شعار جامعة الزهراوي الدولية لعلوم الصحة   معلومات التأسيس 2014 - 2015 النوع جامعة الشريك مع وزارة التعليم العالي المعاهد المعهد العالي للهندسة والتقنيات الصحية٬ معهد IFCP للمساعدين الطبيين الكليات كلية الزهراوي للطب، كلية الزهراوي...

«Атабаскан» (R79) HMCS Athabaskan (R79) Канадський есмінець «Атабаскан». 1951 Служба Тип/клас ескадрений міноносець «Трайбл» Держава прапора  Канада Належність  Військово-морські сили Канади На честь другий корабель флоту на ім'я «Атабаскан»[Прим. 1][Прим. 2] Корабельня Hal...

 

George II, Duke of PomeraniaBorn(1582-01-30)30 January 1582BarthDied27 March 1617(1617-03-27) (aged 35)Bukowo MorskieBuriedCastle Church in SzczecinNoble familyHouse of GriffinsFatherBogislaw XIII, Duke of PomeraniaMotherClara of Brunswick George II of Pomerania (30 January 1582, in Barth – 27 March 1617, in Seebuckow, Rügenwalde (after 1945 Bukowo Morskie, Darlowo)) was a non-reigning duke of Pomerania. He administered the district of Rügenwalde from 1606 to 1617 jointly with his br...

 

The Muthoot family is one of the foremost business houses in South India. The family has interests in various sectors of business varying from financial services to media. The founder of the Muthoot Group was M.N. Mathai (who goes by N. Mathai Muthoot), from whom the business house was later taken over by his son, M. George Muthoot,. The family traces its roots to Thevervelil Family in the small town of Kozhencherry in Central Travancore.[1] The Muthoot family are Christians belonging...

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Everybody Wang Chung Tonight: Wang Chung's Greatest Hits – news · newspapers · books · scholar · JSTOR (June 2018) (Learn how and when to remove this template message) 1997 greatest hits album by Wang ChungEverybody Wang Chung Tonight: Wang Chung's Greatest...

 

1992 video game This article is about the Nintendo Entertainment System and the Famicom game. For the Game Boy game, see Mega Man V (Game Boy). 1992 video gameMega Man 5North American cover artDeveloper(s)CapcomPublisher(s)JP/NA: CapcomEU: NintendoDirector(s)Ichirou MiharaProducer(s)Tokuro FujiwaraDesigner(s)Ichirou MiharaProgrammer(s)Tadashi KuwanaArtist(s)Keiji InafuneHayato KajiNaoya TomitaKazunori TazakiKazushi ItōComposer(s)Mari YamaguchiSeriesMega ManPlatform(s)Nintendo Entertainment S...

 

1935 film by B. Reeves Eason, Armand Schaefer The Miracle RiderTheatrical release posterDirected byB. Reeves EasonArmand SchaeferWritten byBarney A. SareckyWellyn TotmanProduced byNat LevineBarney A. SareckyStarringTom MixJoan GaleCharles MiddletonCinematographyErnest MillerWilliam NoblesEdited byRichard FantlMusic byNem HerkanProductioncompanyMascot PicturesDistributed byMascot PicturesRelease date April 12, 1935 (1935-04-12) Running time15 chapters (306 minutes)CountryUnited ...

Brazilian actress, and model Claudia AlendeBornClaudia Manfrin Alende (1996-10-09) 9 October 1996 (age 27) [2]Francisco Beltrão, Brazil[3]Occupation(s)actress, entrepreneur, singerModeling informationAgencyBlanc Media Linck Group Conttratta[1] Two Pillar Management Claudia Manfrin Alende (born 9 October 1996) is a Brazilian/American actress, and singer,[4] the owner of Blanc Media and founder of Burger Babes. Early life Alende was born in Francisco Beltr...

 

Executive department of the Philippine government Department of HealthKagawaran ng KalusuganThe DOH seal represents a commitment to quality, trust, and excellence in promoting health and wellness for all.Department of Health Central OfficeDepartment overviewFormedSeptember 10, 1898; 125 years ago (1898-09-10)HeadquartersSan Lazaro Compound, Rizal Avenue, Santa Cruz, Manila14°36′55.95″N 120°58′54.99″E / 14.6155417°N 120.9819417°E / 14.61554...

 

هذه المقالة بحاجة لصندوق معلومات. فضلًا ساعد في تحسين هذه المقالة بإضافة صندوق معلومات مخصص إليها.   ميّز عن مركز شباب. نزل للشباب في روما. نزل للشباب في تايوان. نزل الشباب أو مضيف شباب أو دار الشباب (بالإنجليزية: Youth hostel)‏ هي منازل منتشرة في العالم كله، هدفها توفير بيوت ...

City in Wabaunsee County, Kansas City and County seat in Kansas, United StatesAlma, KansasCity and County seatBrandt Hotel (2017)Nickname: City of Native Stone Set in the Foothills[1]Location within Wabaunsee County and KansasKDOT map of Wabaunsee County (legend)Coordinates: 39°0′55″N 96°17′14″W / 39.01528°N 96.28722°W / 39.01528; -96.28722[2]CountryUnited StatesStateKansasCountyWabaunseeFounded1867Incorporated1869[3]Government...

 

CardinalFrançois de TournonCardinal-Bishop of Ostia e Velletri; Archbishop of LyonArchdioceseEmbrun (1518-1525)Bourges (1526-1537)Auch (1538-1551)Lyon (1551-1562)DioceseSabina (1550-1560)Ostia e Velletri (1560-1562)OrdersCreated cardinal1530by Pope Clement VIIPersonal detailsBorn1489Tournon-sur-Rhône, FranceDied22 April 1562Saint-Germain en Laye, FranceBuriedCollege de Tournon, Tournon FRNationalityFrenchParentsJacques, Comte de RoussilonJeanne de Polignac François de Tournon (1489 in Tour...

 

بعض البقع التي ظهرت على هذا الفأر الذي أوجد بعد تعديل وراثي. الكائنات المعدلة جينيًا[1] أو محور وراثيا[2] أو العابر الجيني[3] هي الكائنات التي جرى تعديل مادتها الوراثية بواسطة الهندسة الوراثية لتصبح أكثر تطورًا وتلبية للحاجات البشرية. أي أنها كائنات تم تغيير جينا...

«Melchor» redirige aquí. Para otras acepciones, véase Melchor (desambiguación). Este artículo o sección necesita referencias que aparezcan en una publicación acreditada. Busca fuentes: «Rey Melchor» – noticias · libros · académico · imágenesEste aviso fue puesto el 6 de enero de 2021. Detalle de Melchor en La adoración de los magos, de Jacob van Oostsanen. Melchor es uno de los nombres que la tradición le ha dado a uno de los Magos de Oriente como son men...

 

For the insect, see Chrysis ignita. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Goldfly – news · newspapers · books · scholar · JSTOR (November 2021) (Learn how and when to remove this message) 1997 studio album by GusterGoldflyStudio album by GusterReleasedMarch 4, 1997RecordedDecember 1996Genre...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!