50 najpopularnijih pitanja i odgovora na JDBC intervjuu (2025.)
Ovdje su pitanja i odgovori na razgovoru za povezivanje Java baze podataka (JDBC) za brucoše kao i za iskusne kandidate koji će dobiti posao iz snova.
Besplatno preuzimanje PDF-a: JDBC pitanja za intervju
1) Što je JDBC?
JDBC je kratica za Java Database Connectivity. JDBC je Java API koji komunicira s bazom podataka i izvršava SQLquery.
2) Što je JDBC upravljački program i koliko je JDBC upravljačkih programa dostupno?
JDBC upravljački program sadrži klase i sučelja koja pomažu Java aplikaciji i bazi podataka.
Postoje 4 vrste JDBC upravljačkih programa.
- Upravljački program tipa 1 ili JDBC-ODBC premosni upravljački program.
- Upravljački program tipa 2 ili izvorni-API, djelomično Java driver.
- Upravljački program tipa 3 ili mrežni protokol, čisti Java upravljački program.
- Upravljački program tipa 4 ili izvorni protokol, čisti Java upravljački program.
3) Kako se mogu povezati MySQL ili Oracle s Javom?
//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; }
Objašnjenje koda
Class.forName stvara instancu JDBC upravljačkog programa i registrira se u DriverManageru.
metoda getConnection () uvijek uspostavlja vezu s bazom podataka.
Moramo kreirati objekt Statement iz gornjeg objekta veze. Naredba će vratiti objekt resultseta. ResultSet.next() znači da skup rezultata i dalje vraća redak.
4) Koji JDBC upravljački program je najbrži upravljački program?
Driver Type 4 ili Native-protocol, čisti Java driver, je najbrži driver.
5) Što su JDBC API komponente?
Postoje četiri vrste komponenti
- JDBC API
- JDBC upravljački program
- JDBC Test Suite
- JDBC-ODBC most
6) Što su JDBC izjave?
Postoje 3 vrste JDBC izjava, kao što je navedeno u nastavku:
- IzjavaIzvršit će se SQL upit (statički SQL upit) prema bazi podataka.
- Pripremljena izjava: Koristi se kada želimo više puta izvršavati SQL naredbu. Ulazni podaci su dinamički i uzimaju se tijekom izvođenja.
- Izjava o pozivu: Koristi se kada želimo izvršiti pohranjene procedure.
7) Kako možemo izvršiti pohranjene procedure?
Pohranjene procedure mogu se izvršiti pomoću naredbe JDBCcallable. Evo koda.
Connection conn = null; CallableStatement callStmt = conn.prepareCall("{call myStoreproc(?, ?)}"); callStmt.setString(1, "abcdefg");
8) Koje su prednosti korištenja PreparedStatementa u Javi?
Prepared Statement se koristi za ponavljanje istih SQL izraza. Pripremljena izjava se kompilira samo jednom iako je koristila “n” broj puta
9) Što je ResultSet?
Sučelje java.sql.ResultSet znači skup rezultata SQL upita. To znači da kursor pokazuje redak tablice; pokazuje na prije prvog reda.
10) Koje su vrste ResultSet-a?
Dostupne su tri vrste ResultSet-a. Ako ne deklariramo nijedan ResultSet, to znači da pozivamo TYPE_FORWARD_ONLY
- TYPE_FORWARD_ONLY: pokazivač se može pomicati samo naprijed.
- TYPE_SCROLL_INSENSITIVE: pokazivač se može pomicati naprijed i natrag, ali nije osjetljiv.
- TYPE_SCROLL_SENSITIVE: kursor se može pomicati naprijed i nazad, ali je osjetljiv
11) Objasnite razliku između RowSet-a i ResultSet-a u JDBC-u?
U vezi ResultSet handle s DB-om, ne možemo napraviti Result kao serijalizirani objekt.
Zbog gore navedenog problema, ne možemo proslijediti Resultset preko mreže.
RowSet proširuje sučelje ResultSet, tako da sadrži sve metode iz ResultSet-a. RowSet je serijaliziran.
Dakle, možemo proslijediti Rowset iz jedne klase u drugu klasu jer nema veze s bazom podataka.
12) Zašto biste koristili setAutoCommit(false) u JDBC-u?
Ako želite isključiti Auto Commit tada postavite connection.setAutoCommit(false)
13) Što su upozorenja baze podataka u JDBC-u i kako možemo postupati s upozorenjima baze podataka u JDBC-u?
SQL upozorenje ili upozorenje baze podataka podklasa je klase SQLException. To možemo riješiti pomoću metode getWarnings() na Connection, Statement i ResultSet
14) Mogu li dobiti nulti ResultSet?
Ne, ne možemo dobiti null Resultset. ResultSet.next() može vratiti null ako sljedeći zapis ne sadrži redak.
15) Što mislite pod metapodacima i zašto ih koristimo?
Metapodaci su podaci ili informacije o drugim podacima. Koristimo metapodatke za dobivanje verzije proizvoda baze podataka, naziva upravljačkog programa, ukupnog broja tablica i prikaza.
16) Koja je razlika između izvršavanja, executeQuery, executeUpdate u JDBC-u?
execute(): može se koristiti za bilo koju vrstu SQL upita.
executeQuery() : može se koristiti za odabir upita.
executeUpdate(): može se koristiti za promjenu/ažuriranje tablice.
17) Što je skupljanje veze baze podataka? Prednosti korištenja skupa veza?
Skupljanje veza znači da će veze biti pohranjene u predmemoriju i da ih možemo ponovno koristiti u budućnosti.
Prednost:
- Brže je
- Skupljanje veze postaje lakše za dijagnosticiranje i analizu veze baze podataka.
18) Koja je funkcija klase DriverManager?
To je sučelje između korisnika i vozača. DriverManager prati sve aktivnosti između baze podataka i odgovarajućeg upravljačkog programa.
19) Koje je značenje skupnih ažuriranja?
Skupno ažuriranje znači izvršavanje skupa/grupe SQL upita odjednom.
Skupna ažuriranja mogu se koristiti samo za umetanje, ažuriranje i brisanje, ali ne i za odabir upita.
20) Koliko je paketa dostupno u JDBC API-ju?
U JDBC API-ju dostupne su dvije vrste paketa
- java.sql
- javax.sql
21) Koji je tip povrata za izvršavanje, izvršavanjeUpita i izvršavanjeAžuriranja?
Vrsta povrata izvršenja je Boolean
Vrsta povrata executeQuery je ResultSet objekt
Vrsta povrata executeUpdate je int
22) Indeks skupa rezultata počinje s 0 ili 1?
Indeks skupa rezultata počinje s 1.
23) Koja je uloga Class.forName pri učitavanju upravljačkih programa?
Class.forName stvara instancu JDBC upravljačkog programa i registrira se u DriverManageru.
24) JDBC-ODBC most je višenitni ili ne?
Ne, JDBC-ODBC Bridge koristi sinkronizirane metode za serijalizaciju svih poziva upućenih ODBC-u.
25) Koje sučelje rukuje upravljanjem transakcijama u JDBC-u?
Sučelje veze upravlja upravljanjem transakcijama u JDBC-u. Omogućuje metodu za commit (), rollback () itd.
26) Zašto se pojavljuje pogreška "Nema odgovarajućeg upravljačkog programa"?
Nema odgovarajućeg upravljačkog programa” pojavljuje se kada pozivamo metodu DriverManager.getConnection,
može se pojaviti zbog sljedećih razloga:
- ne mogu učitati točne JDBC upravljačke programe prije pozivanja metode getConnection.
- Možda je nevažeći ili pogrešan JDBC URL.
27) Pripremljene izjave su brže. Zašto?
Izvršenje pripremljene naredbe je brže od izravnog izvođenja jer se naredba kompajlira samo jednom. Pripremljene izjave i JDBC upravljački program međusobno su povezani tijekom izvođenja i nema dodatnih troškova veze.
28) Je li moguće povezati se s više baza podataka? Možemo li pomoću jedne izjave ažurirati ili izvući podatke iz dvije, tri ili više baza podataka?
Da, moguće je spojiti se na više baza podataka u isto vrijeme, ali to ovisi o konkretnom upravljačkom programu.
Za ažuriranje i izdvajanje podataka iz različite baze podataka možemo koristiti jednu izjavu. Ali potreban nam je međuprogram za rad s više baza podataka ili jednom bazom podataka.
29) Recite mi razliku između setMaxRows(int) i SetFetchSize(int)?
setMaxRows(int) | PostaviFetchSize(int)? |
---|---|
Definira koliko redaka skup rezultata može sadržavati odjednom | Definira broj redaka koji će se čitati iz baze podataka. |
30) Recite mi nešto o posebnim znakovima?
Posebnom znaku prethodi izlazni znak. Primjer –
SELECT NAME FROM TABLE WHERE NAME LIKE '\_%' {escape '\'}
31) Što znači "prljavo čitanje" u bazi podataka?
Prljavo čitanje znači "pročitati vrijednost koja može biti točna ili ne mora biti točna."
32) Što mislite pod obvezama u dvije faze?
Dvofazni commit se koristi u procesu distribuirane transakcije. Ako se bilo koja transakcija izvršava i to će utjecati na više baza podataka. Dvofazna predaja koristit će se kako bi se sve baze podataka međusobno sinkronizirale.
33) Koliko sustava zaključavanja postoji u JDBC-u?
U JDBC-u su dostupne dvije vrste zaključavanja pomoću kojih možemo rukovati s više od jednog korisnika.
Ako dva korisnika pregledavaju isti zapis, tada se ne vrši zaključavanje. Ako jedan korisnik ažurira zapis, a i drugi korisnik ažurira isti zapis, tada ćemo koristiti zaključavanje.
- Optimistično zaključavanje: zaključat će zapis samo kada ćemo "ažurirati."
- Pesimističko zaključavanje: zaključat će zapis iz "odabranog" vremena za pregled, ažuriranje i ukidanje.
34) Koje su iznimke u JDBC-u?
U JDBC postoje četiri vrste iznimaka.
- batchUpdate Iznimka
- Skraćivanje podataka
- SQL iznimka
- SQL upozorenje
35) Dajte korake za povezivanje s bazom podataka koristeći JDBC?
Postoje dva načina za povezivanje baze podataka koristeći JDBC
- Korištenje DriverManagera:
Učitat će klasu drajvera uz pomoć class.forName(driver class) i Class.forName().
Nakon učitavanja prenijet će kontrolu DriverManageru.
DriverManager.getConnection() će stvoriti vezu za pristup bazi podataka.
- Korištenje izvora podataka:
Za DataSource, nije potrebno koristiti DriverManager uz pomoć JNDI-ja. Pretražit će DataSource s poslužitelja usluge imenovanja. Metoda DataSource.getConnection() vratit će objekt Connection u bazu podataka.
36) Objasnite JDBC arhitekturu?
JDBC API podržava i 2-slojne i 3-slojne modele za bazu podataka.
U 2-slojnom modelu Java aplikacija komunicira s izvorom podataka
U 3-slojnom modelu naredbe se preusmjeravaju na "srednji sloj" usluga. Nakon toga se naredbe šalju izvoru podataka.
37) Koje su nove značajke dostupne u JDBC 4.0?
Nove značajke su
- Automatsko učitavanje JDBC klase upravljačkog programa
- Poboljšano upravljanje vezom
- RowId SQL omogućen
- Skup podataka implementiran pomoću SQL-a korištenjem Anotacija
- Poboljšanja rukovanja SQL iznimkama
- Podržava SQL XML slika
38) Koji se paketi koriste u JDBC?
U JDBC-u se koristi 8 paketa –
- sql.Driver
- priključak
- Izjava
- PreparedStatement
- CallableStatement
- ResultSet
- ResultSetMetaData
- DatabaseMetaData
39) Koliko je skupova redova dostupno u JDBC-u?
Dostupne su dvije vrste skupova redova:
- povezan – Povezani objekt RowSet trenutno se povezuje s bazom podataka. Ako se aplikacija prekine, povezani objekt RowSet također se završava.
- rastavljen – Odspojeni objekt RowSet povezuje se s bazom podataka nakon izvršenja potrebnog upita.
40) Koje je značenje veze?
Sučelje povezivanja sastoji se od metoda za interakciju s bazom podataka.
41) Objasnite JDBC točku spremanja?
Točka spremanja predstavlja točku na koju se trenutna transakcija može vratiti. Umjesto vraćanja svih promjena, može odlučiti vratiti samo neke od njih.
42) Navedite prednosti korištenja DataSourcea?
Izvor podataka dijeli posao između administratora i programera/developera.
Administrator stvara objekt DataSource i povezuje ga s JNDI registrom. Programer/razvojni inženjer dohvaća objekt DataSource iz registra. Zatim će uspostaviti vezu s bazom podataka.
43) Koji je razlog zašto nam je potreban JdbcRowSet poput omotača oko ResultSeta?
Objekt ResultSet možemo koristiti kao JavaBeans komponentu.
- JdbcRowSet također se može koristiti kao JavaBeans komponenta. Zato se može kreirati i konfigurirati u vrijeme dizajna ili kompajliranja i izvršiti u vrijeme izvođenja.
- Svi objekti jdbcRowSet mogu se pomicati i ažurirati.
44) Na koliko načina možemo vidjeti skup rezultata?
Postoje 2 načina za pregled ResultSet-a
- kolona
- indeks stupca.
Primjer: getInt(String columnName), getInt(int columnIndex)
45) Na koliko načina možete ažurirati skup rezultata?
Sljedeće metode pomažu vam ažurirati skup rezultata
- updateRow()
- izbrisatiRed()
- osvježiRed()
- cancelRowUpdates()
- umetni red()
46) Zašto bismo trebali zatvoriti veze s bazom podataka u Javi?
Kao najbolja praksa, moramo zatvoriti skup rezultata, izjavu i vezu. Ako veza dolazi iz skupa, nakon zatvaranja, veza se šalje natrag u bazen za ponovnu upotrebu. Ovo radimo u finally{} bloku, jer ako se dogodi bilo kakva iznimka, još uvijek imamo priliku zatvoriti ovo.
47) Zašto koristimo blob tipove podataka u JDBC-u?
Koriste se za pohranu velike količine podataka u bazu podataka poput slika, filmova itd.
48) Kako postaviti atribut Concurrency u ResultSet?
Postoje dvije razine istovremenosti
- CONCUR_READ_ONLY – Služi samo za čitanje.
- CONCUR_UPDATABLE − Može se čitati i ažurirati.
49) Koja je razlika između kursora baze podataka klijenta i poslužitelja?
Kursor na strani poslužitelja znači da su podaci i rezultati spremljeni na poslužitelju. Samo kada se traženi podaci šalju klijentu.
Kursor na strani klijenta označava sve podatke poslane na lokaciju klijenta.
50) Kako umetnuti slike u bazu podataka koristeći JDBC?
Slike u bazi podataka koje koriste tip podataka BLOB pri čemu je slika pohranjena kao niz bajtova. Donji kod pokazuje kako umetnuti sliku u 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();
Ova pitanja za intervju također će vam pomoći u vašem životu
vrlo korisno za studente………..
Najbolje