Top 50 de întrebări și răspunsuri la interviu JDBC (2025)
Iată întrebările și răspunsurile la interviu pentru Java Database Connectivity (JDBC) pentru cei în curs de dezvoltare, precum și pentru candidații cu experiență pentru a obține jobul visat.
Descărcare gratuită PDF: Întrebări de interviu JDBC
1) Ce este JDBC?
JDBC înseamnă Java Database Connectivity. JDBC este un API Java care comunică cu baza de date și execută SQLquery.
2) Ce este un driver JDBC și câte drivere JDBC sunt disponibile?
Driverul JDBC conține clase și interfețe care ajută aplicația și baza de date Java.
Există 4 tipuri de drivere JDBC.
- Driver de tip 1 sau driver de punte JDBC-ODBC.
- Driver de tip 2 sau nativ-API, parțial driver Java.
- Driver de tip 3 sau protocol de rețea, driver Java pur.
- Driver de tip 4 sau nativ-protocol, driver Java pur.
3) Cum mă pot conecta MySQL sau Oracle cu Java?
//for MySQL { try { Class.forName ("com.mysql.jdbc.Driver"); con=DriverManager.getConnection ("jdbc: mysql://localhost:3306/dbanme", "username", "password"); Statement st=con.createstatement (); Resultset rs=st.executeQuery ("select * from user"); rs.next (); catch (ClassNotFoundException e) { System.err.println ("ClassNotFoundException in get Connection," + e.getMessage()); } catch (SQLException e) { System.err.println ("SQLException in getConnection," + e.getMessage ()) ;} //for oracle { try { Class.forName ("oracle.jdbc.driver.OracleDriver"); con= DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:dbname", "username", "password"); Statement st=con.createstatement(); Resultset rs=st.executeQuery("select * from user"); Rs.next(); } catch (ClassNotFoundException e) { System.err.println("ClassNotFoundException in get Connection," +e.getMessage()); } catch (SQLException e) { System.err.println("SQLException in getConnection, " + e.getMessage()); } return con; }
Explicația codului
Class.forName creează o instanță a driverului JDBC și se înregistrează cu DriverManager.
Metoda getConnection () stabilește întotdeauna o conexiune la o bază de date.
Trebuie să creăm un obiect Statement (Statement) pornind de la obiectul conexiunii de mai sus. Instruction va returna obiectul resultset. ResultSet.next() înseamnă că setul de rezultate returnează în continuare un rând.
4) Care driver JDBC este cel mai rapid driver?
Driverul de tip 4 sau protocolul nativ, driverul Java pur, este cel mai rapid driver.
5) Care sunt componentele API JDBC?
Există patru tipuri de componente
- API-ul JDBC
- Manager de drivere JDBC
- Suita de testare JDBC
- Podul JDBC-ODBC
6) Care sunt instrucțiunile JDBC?
Există 3 tipuri de declarații JDBC, după cum este prezentat mai jos:
- DeclarațieSe va executa SQL interogare (interogare SQL statică) împotriva bazei de date.
- Declarație pregătită: Se folosește atunci când dorim să executăm instrucțiuni SQL în mod repetat. Datele de intrare sunt dinamice și sunt preluate la momentul execuției.
- Declarație apelabilă: Folosit atunci când dorim să executăm proceduri stocate.
7) Cum putem executa proceduri stocate?
Procedurile stocate pot fi executate folosind instrucțiunea JDBCcallable. Iată codul.
Connection conn = null; CallableStatement callStmt = conn.prepareCall("{call myStoreproc(?, ?)}"); callStmt.setString(1, "abcdefg");
8) Care sunt avantajele utilizării PreparedStatement în Java?
Prepared Statement este folosit pentru a executa aceleași instrucțiuni SQL în mod repetat. Declarația pregătită este compilată o singură dată, chiar dacă a folosit „n” de număr de ori
9) Ce este ResultSet?
Interfața java.sql.ResultSet înseamnă setul de rezultate al unei interogări SQL. Înseamnă că un cursor indică un rând al unui tabel; indică înainte de primul rând.
10) Care sunt tipurile de ResultSet?
Există trei tipuri de ResultSet disponibile. Dacă nu declarăm niciun ResultSet, înseamnă că apelăm TYPE_FORWARD_ONLY
- TYPE_FORWARD_ONLY: cursorul se poate deplasa numai înainte.
- TYPE_SCROLL_INSENSITIVE: cursorul se poate deplasa înainte și înapoi, dar nu este sensibil.
- TYPE_SCROLL_SENSITIVE: cursorul se poate deplasa înainte și înapoi, dar este sensibil
11) Explicați diferența dintre RowSet și ResultSet în JDBC?
Într-o conexiune de mâner ResultSet la o bază de date, nu putem face Result ca obiect serializat.
Din cauza problemei de mai sus, nu putem transmite Resultset prin rețea.
RowSet extinde interfața ResultSet, astfel încât deține toate metodele din ResultSet. RowSet este serializat.
Deci, putem trece Rowset de la o clasă la alta, deoarece nu are nicio legătură cu baza de date.
12) De ce ați folosi setAutoCommit(false) în JDBC?
Dacă doriți să dezactivați Auto Commit, atunci setați connection.setAutoCommit(false)
13) Ce sunt avertismentele bazei de date în JDBC și cum putem gestiona avertismentele bazei de date în JDBC?
Avertismentul SQL sau avertismentul baza de date este subclasa clasei SQLException. Ne putem descurca folosind metoda getWarnings() pe Connection, Statement și ResultSet
14) Pot obține un ResultSet nul?
Nu, nu putem obține un rezultat nul. ResultSet.next() poate returna null dacă următoarea înregistrare nu conține un rând.
15) Ce înțelegeți prin Metadate și de ce le folosim?
Metadatele înseamnă date sau informații despre alte date. Folosim metadate pentru a obține versiunea produsului bazei de date, numele driverului, numărul total de tabele și vizualizări.
16) Care este diferența dintre executarea, executeQuery, executeUpdate în JDBC?
execute(): poate fi folosit pentru orice fel de interogare SQL.
executeQuery() : poate fi folosit pentru interogarea de selectare.
executeUpdate(): poate fi folosit pentru a schimba/actualiza tabelul.
17) Ce este poolingul de conexiuni la baza de date? Avantajele utilizării unui pool de conexiuni?
Gruparea conexiunilor înseamnă că conexiunile vor fi stocate în cache și le putem reutiliza în viitor.
Avantaj:
- Este mai rapid
- Gruparea conexiunilor devine mai ușor de diagnosticat și analizat conexiunea la baza de date.
18) Care este funcția clasei DriverManager?
Este o interfață între utilizator și șoferi. DriverManager urmărește toată activitatea dintre o bază de date și driverul corespunzător.
19) Care este sensul actualizărilor în lot?
Actualizări în lot înseamnă executarea unui set/grup de interogări SQL simultan.
Actualizările lot pot fi utilizate numai pentru inserare, actualizare și ștergere, dar nu și pentru interogarea selectată.
20) Câte pachete sunt disponibile în API-ul JDBC?
Două tipuri de pachete sunt disponibile în API-ul JDBC
- java.sql
- javax.sql
21) Care este tipul de returnare execute, executeQuery și executeUpdate?
Tipul de execuție returnat este boolean
Tipul returnat de executeQuery este obiectul ResultSet
Tipul returnat de executeUpdate este int
22) Indicele setului de rezultate începe cu 0 sau 1?
Indicele setului de rezultate începe cu 1.
23) Care este rolul Class.forName la încărcarea driverelor?
Class.forName creează o instanță a driverului JDBC și se înregistrează cu DriverManager.
24) Bridge-ul JDBC-ODBC este multi-threaded sau nu?
Nu, JDBC-ODBC Bridge utilizează metode sincronizate pentru a serializa toate apelurile efectuate către ODBC.
25) Ce interfață se ocupă de gestionarea tranzacțiilor în JDBC?
Interfața de conectare se ocupă de gestionarea tranzacțiilor în JDBC. Oferă metoda pentru commit (), rollback () etc.
26) De ce apare eroarea „Fără driver adecvat”?
Niciun driver adecvat” apare atunci când apelăm metoda DriverManager.getConnection,
poate apărea din următoarele motive:
- nu pot încărca driverele JDBC exacte înainte de a apela metoda getConnection.
- Poate fi o adresă URL JDBC invalidă sau greșită.
27) Declarațiile pregătite sunt mai rapide. De ce?
Execuția instrucțiunii pregătite este mai rapidă decât execuția directă, deoarece instrucțiunea este compilată o singură dată. Declarațiile pregătite și driverul JDBC sunt conectate între ele în timpul execuției și nu există costuri de conexiune.
28) Este posibil să vă conectați la mai multe baze de date? Folosind o singură declarație, putem actualiza sau extrage date din două sau trei sau mai multe baze de date?
Da, este posibil să vă conectați la mai multe baze de date, în același timp, dar depinde de driverul specific.
Pentru a actualiza și a extrage date din diferite baze de date putem folosi declarația unică. Dar avem nevoie de middleware pentru a face față mai multor baze de date sau cu o singură bază de date.
29) Spune-mi diferența dintre setMaxRows(int) și SetFetchSize(int)?
setMaxRows(int) | SetFetchSize(int)? |
---|---|
Definește câte rânduri poate conține un set de rezultate simultan | Definește numărul de rânduri care vor fi citite din baza de date. |
30) Spune-mi despre personaje speciale?
Un caracter special este precedat de un caracter de escape. Exemplu –
SELECT NAME FROM TABLE WHERE NAME LIKE '\_%' {escape '\'}
31) Care este sensul cuvântului „citire murdară” în baza de date?
Citire murdară înseamnă „citește valoarea care poate fi corectă sau nu este corectă”.
32) Ce înțelegeți prin comitere în două faze?
Comitarea în două faze este utilizată în procesul de tranzacție distribuită. Dacă se execută vreo tranzacție și va afecta mai multe baze de date. Comiterile în două faze vor fi utilizate pentru a face ca toate bazele de date să fie sincronizate între ele.
33) Câte sisteme de blocare există în JDBC?
În JDBC sunt disponibile două tipuri de blocare prin care putem gestiona mai mult de un utilizator.
Dacă doi utilizatori vizualizează aceeași înregistrare, atunci nu se aplică nicio blocare. Dacă un utilizator actualizează o înregistrare, iar al doilea utilizator actualizează și el aceeași înregistrare, în acel moment vom folosi blocarea.
- Blocare optimistă: va bloca înregistrarea numai atunci când vom face „actualizare”.
- Blocare pesimistă: va bloca înregistrarea din „selectare” pentru a vizualiza, actualiza și comite timpul.
34) Care sunt excepțiile în JDBC?
Există patru tipuri de excepții în JDBC.
- Excepție batchUpdate
- Trunchierea datelor
- Excepție SQL
- Avertisment SQL
35) Dați pași pentru a vă conecta la DB folosind JDBC?
Există două moduri de a conecta baza de date folosind JDBC
- Folosind DriverManager:
Acesta va încărca clasa de șofer cu ajutorul class.forName(clasa șofer) și Class.forName().
După încărcare, acesta va trece controlul către DriverManager.
DriverManager.getConnection() va crea conexiunea pentru a accesa baza de date.
- Folosind DataSource:
Pentru DataSource, nu este nevoie să utilizați DriverManager cu ajutorul JNDI. Acesta va căuta DataSource de pe serverul de servicii de denumire. Metoda DataSource.getConnection() va returna obiectul Connection către baza de date.
36) Explicați arhitectura JDBC?
API-ul JDBC acceptă atât modele cu 2 niveluri, cât și modele cu trei niveluri pentru baza de date.
În modelul cu 2 niveluri, aplicația Java interacționează cu sursa de date
În modelul cu 3 niveluri, comenzile sunt redirecționate către un „nivel mediu” de servicii. După aceea, comenzile au fost trimise la sursa de date.
37) Care sunt noile caracteristici disponibile în JDBC 4.0?
Noile caracteristici sunt
- Încărcare automată după clasa de driver JDBC
- Gestionare îmbunătățită a conexiunii
- RowId SQL activat
- Set de date implementat de SQL folosind Adnotări
- Îmbunătățiri ale gestionării excepțiilor SQL
- Suport SQL XML fișiere
38) Care sunt pachetele utilizate în JDBC?
8 pachete sunt utilizate în JDBC –
- sql.Driver
- Conexiune
- Declarație
- Declarație pregătită
- CallableStatement
- Setul de rezultate
- ResultSetMetaData
- Baza de date MetaData
39) Câte RowSet sunt disponibile în JDBC?
Există două tipuri de seturi de rânduri disponibile:
- Conectat – Un obiect RowSet conectat se conectează instantaneu la baza de date. Dacă aplicația se termină, atunci obiectul RowSet conectat se termină și el.
- Deconectat – Un obiect RowSet deconectat se conectează la baza de date după executarea interogării necesare.
40) Care este sensul conexiunii?
Interfața de conectare constă din metode de interacțiune cu baza de date.
41) Explicați punctul de salvare JDBC?
Un punct de salvare reprezintă un punct la care tranzacția curentă poate reveni înapoi. În loc să-și anuleze toate modificările, poate alege să retragă doar unele dintre ele.
42) Enumerați avantajele utilizării DataSource?
Sursa de date împarte munca între administrator și programator/dezvoltator.
Administratorul creează un obiect DataSource și îl conectează la registrul JNDI. Un programator/dezvoltator preia obiectul DataSource din registru. Apoi, stabilește conexiunea cu baza de date.
43) Care este motivul pentru care avem nevoie de un JdbcRowSet ca wrapper-ul din jurul ResultSet?
Putem folosi obiectul ResultSet ca componentă JavaBeans.
- Un JdbcRowSet poate fi folosit și ca componentă JavaBeans. De aceea poate fi creat și configurat în timpul proiectării sau al compilării și executat în timpul rulării.
- Toate obiectele jdbcRowSet sunt defilabile și actualizabile.
44) În câte moduri putem vizualiza un set de rezultate?
Există 2 moduri de a vizualiza ResultSet
- coloană
- indexul coloanei.
Exemplu: getInt(String columnName), getInt(int columnIndex)
45) Câte moduri puteți actualiza un set de rezultate?
Următoarele metode vă ajută să actualizați setul de rezultate
- updateRow()
- deleteRow()
- refreshRow()
- cancelRowUpdates()
- insertRow()
46) De ce ar trebui să închidem conexiunile la baze de date în Java?
Ca cea mai bună practică, trebuie să închidem setul de rezultate, declarația și conexiunea. Dacă conexiunea provine dintr-un pool, la închidere, conexiunea este trimisă înapoi la pool pentru reutilizare. Facem acest lucru în blocul finally{}, pentru că dacă apare vreo excepție, atunci avem în continuare șansa de a închide aceasta.
47) De ce folosim tipuri de date blob în JDBC?
Acestea sunt folosite pentru a stoca o cantitate mare de date în baza de date, cum ar fi imagini, film etc.
48) Cum să setați atributul Concurență în ResultSet?
Există două niveluri de concurență
- CONCUR_READ_ONLY – Este doar pentru citire.
- CONCUR_UPDATABLE − Este atât pentru citit, cât și pentru actualizat.
49) Care este diferența dintre cursoarele bazei de date client și server?
Cursorul din partea serverului înseamnă că datele și rezultatele sunt salvate pe server. Doar atunci când datele solicitate sunt trimise către client.
Cursorul din partea clientului înseamnă toate datele trimise la locația clientului.
50) Cum inserați imagini în baza de date folosind JDBC?
Imagini din baza de date folosind tipul de date BLOB în care imaginea este stocată ca flux de octeți. Codul de mai jos arată cum să inserați imaginea în DB.
Connection con = null; PreparedStatement prs = null; InputStream inputstrm = null; Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:mydb","username","yourpassword"); //localhost is your machine or hostname //1521 is your oracle database port number //mydb is your oracle database name. prs = con.prepareCall("insert into emp_profile values (?,?)"); prs.setInt(1, 1223); inputstrm = new FileInputStream(new File("emp_img.jpg")); prs.setBinaryStream(2, inputstrm); int count = prs.executeUpdate();
Aceste întrebări de interviu vă vor ajuta, de asemenea, în viva (orale)
foarte folositor pentru elevi………..
Cel mai bune