50 parimat JDBC intervjuu küsimust ja vastust (2025)
Siin on Java Database Connectivity (JDBC) intervjuu küsimused ja vastused nii värsketele kui ka kogenud kandidaatidele oma unistuste töökoha saamiseks.
Tasuta PDF-i allalaadimine: JDBC intervjuu küsimused
1) Mis on JDBC?
JDBC tähistab Java andmebaasi ühenduvust. JDBC on Java API, mis suhtleb andmebaasiga ja täidab SQL päringut.
2) Mis on JDBC draiver ja kui palju JDBC draivereid on saadaval?
JDBC draiver sisaldab klasse ja liideseid, mis aitavad Java rakendust ja andmebaasi.
JDBC draivereid on 4 tüüpi.
- Tüüp 1 draiver või JDBC-ODBC silladraiver.
- Tüüp 2 draiver või Native-API, osaliselt Java draiver.
- Tüüp 3 draiver või võrguprotokoll, puhas Java draiver.
- Tüüp 4 draiver või Native-protocol, puhas Java draiver.
3) Kuidas ühendada MySQL või Oracle Javaga?
//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; }
Koodi selgitus
Class.forName loob JDBC draiveri eksemplari ja registreerub DriverManageris.
GetConnection () meetod loob alati ühenduse andmebaasiga.
Peame ülaltoodud ühendusobjektist looma lauseobjekti (Statement). Lause tagastab tulemuskomplekti (resultset). ResultSet.next() tähendab, et kui tulemuskomplekt tagastab endiselt rea, siis see juhtub siis, kui tulemuskomplekt tagastab ikka veel rea.
4) Milline JDBC draiver on kiireim?
Tüüp 4 draiver või Native-protocol, puhas Java draiver, on kiireim draiver.
5) Mis on JDBC API komponendid?
Komponente on nelja tüüpi
- JDBC API
- JDBC draiverite haldur
- JDBC testikomplekt
- JDBC-ODBC sild
6) Mis on JDBC avaldused?
Allpool on toodud 3 tüüpi JDBC avaldusi:
- väljavõteSee käivitub SQL päring (staatiline SQL-päring) andmebaasi vastu.
- Koostatud avaldus: Kasutatakse siis, kui soovime SQL-lauset korduvalt käivitada. Sisendandmed on dünaamilised ja neid võetakse sisendiks käitusajal.
- Helistatav väljavõte: Kasutatakse siis, kui soovime täita salvestatud protseduure.
7) Kuidas saame salvestatud protseduure teostada?
Salvestatud protseduure saab käivitada JDBCcallable avalduse abil. Siin on kood.
Connection conn = null; CallableStatement callStmt = conn.prepareCall("{call myStoreproc(?, ?)}"); callStmt.setString(1, "abcdefg");
8) Millised on PreparedStatementi kasutamise eelised Javas?
Prepared Statementi kasutatakse samade SQL-lausete korduvaks täitmiseks. Koostatud avaldus koostatakse ainult üks kord, kuigi selles on kasutatud "n" arv kordi
9) Mis on ResultSet?
Liides java.sql.ResultSet tähendab SQL-päringu tulemuskomplekti. See tähendab, et kursor osutab tabeli reale; see osutab esimesele reale.
10) Millised on ResultSeti tüübid?
Saadaval on kolme tüüpi ResultSet. Kui me ei deklareeri ühtegi ResultSetit, tähendab see, et helistame TYPE_FORWARD_ONLY
- TYPE_FORWARD_ONLY: kursor saab liikuda ainult edasi.
- TYPE_SCROLL_INSENSITIVE: kursor võib liikuda edasi ja tagasi, kuid mitte tundlik.
- TYPE_SCROLL_SENSITIVE: kursor võib liikuda edasi ja tagasi, kuid see on tundlik
11) Selgitage erinevust RowSeti ja ResultSeti vahel JDBC-s?
ResultSeti käepideme ühenduses andmebaasiga ei saa me teha Resulti jadaobjektina.
Ülaltoodud probleemi tõttu ei saa me Resultset'i üle võrgu edastada.
RowSet laiendab ResultSeti liidest, nii et see sisaldab kõiki ResultSeti meetodeid. RowSet on serialiseeritud.
Seega saame Rowseti ühest klassist teise klassi edastada, kuna sellel pole andmebaasiga seost.
12) Miks peaksite JDBC-s kasutama setAutoCommit(false)?
Kui soovite automaatse kinnitamise välja lülitada, siis määrake connect.setAutoCommit(false)
13) Mis on JDBC-s andmebaasihoiatused ja kuidas saame JDBC-s andmebaasihoiatusi käsitleda?
SQL-hoiatus või andmebaasihoiatus on klassi SQLException alamklass. Saame sellega hakkama, kasutades ühenduse, avalduse ja tulemuste komplektis meetodit getWarnings().
14) Kas ma saan null ResultSeti?
Ei, me ei saa null Resultset. ResultSet.next() võib tagastada nulli, kui järgmine kirje ei sisalda rida.
15) Mida te metaandmete all silmas peate ja miks me neid kasutame?
Metaandmed tähendab andmeid või teavet muude andmete kohta. Me kasutame metaandmeid andmebaasi toote versiooni, draiveri nime, tabelite ja vaadete koguarvu saamiseks.
16) Mis vahe on JDBC-s käskude executeQuery ja executeUpdate käivitamisel?
execute(): seda saab kasutada mis tahes tüüpi SQL-päringu jaoks.
executeQuery(): seda saab kasutada päringu valimiseks.
executeUpdate(): seda saab kasutada tabeli muutmiseks/värskendamiseks.
17) Mis on andmebaasiühenduste ühendamine? Ühendusbasseini kasutamise eelised?
Ühenduste ühendamine tähendab, et ühendused salvestatakse vahemällu ja me saame neid tulevikus uuesti kasutada.
Eelis:
- See on kiirem
- Ühenduste ühendamine muutub andmebaasiühenduse diagnoosimiseks ja analüüsimiseks lihtsamaks.
18) Mis on DriverManageri klassi funktsioon?
See on kasutaja ja draiverite vaheline liides. DriverManager jälgib kogu tegevust andmebaasi ja sobiva draiveri vahel.
19) Mida tähendavad pakettvärskendused?
Pakettvärskendused tähendavad SQL-päringute komplekti/rühma korraga täitmist.
Pakettvärskendusi saab kasutada ainult sisestamiseks, värskendamiseks ja kustutamiseks, kuid mitte valitud päringu jaoks.
20) Mitu paketti on JDBC API-s saadaval?
JDBC API-s on saadaval kahte tüüpi pakette
- java.sql
- javax.sql
21) Mis on execute, executeQuery ja executeUpdate tagastustüüp?
Täitmise tagastustüüp on Boolean
executeQuery tagastustüüp on ResultSet objekt
executeUpdate'i tagastustüüp on int
22) Tulemuste komplekti indeks Kas algab 0 või 1?
Tulemuste komplekti indeks algab 1-ga.
23) Mis rolli mängib Class.forName draiverite laadimisel?
Class.forName loob JDBC draiveri eksemplari ja registreerub DriverManageris.
24) JDBC-ODBC sild on mitme keermega või mitte?
Ei, JDBC-ODBC Bridge kasutab kõigi ODBC-le tehtud kõnede järjestamiseks sünkroonitud meetodeid.
25) Milline liides haldab JDBC tehinguhaldust?
Ühendusliides haldab tehingute haldamist JDBC-s. See pakub meetodit sidumiseks (), tagasipööramiseks () jne.
26) Miks ilmub tõrge "Sobiv draiver puudub"?
Sobivat draiverit pole”, kui kutsume meetodit DriverManager.getConnection,
see võib ilmneda järgmistel põhjustel:
- ei saa laadida täpseid JDBC draivereid enne getConnectioni meetodi kutsumist.
- See võib olla kehtetu või vale JDBC URL.
27) Koostatud avaldused on kiiremad. Miks?
Ettevalmistatud lause täitmine on kiirem kui otsene täitmine, kuna lause koostatakse ainult üks kord. Ettevalmistatud avaldused ja JDBC-draiver on täitmise ajal üksteisega ühendatud ja ühenduse lisakulusid pole.
28) Kas on võimalik ühendada mitme andmebaasiga? Kas ühe avalduse abil saame värskendada või eraldada andmeid kahest, kolmest või mitmest andmebaasist?
Jah, samaaegselt on võimalik ühenduda mitme andmebaasiga, kuid see sõltub konkreetsest draiverist.
Andmete värskendamiseks ja väljavõtmiseks erinevatest andmebaasidest saame kasutada ühte avaldust. Kuid me vajame mitme andmebaasi või ühe andmebaasiga tegelemiseks vahevara.
29) Ütle mulle, mis vahe on setMaxRows(int) ja SetFetchSize(int) vahel?
setMaxRows(int) | Kas määrata FetchSize(int)? |
---|---|
Määrab, mitu rida võib tulemuskomplekt korraga sisaldada | Määrab andmebaasist loetavate ridade arvu. |
30) Räägi mulle erimärkidest?
Erimärgile eelneb paomärk. Näide -
SELECT NAME FROM TABLE WHERE NAME LIKE '\_%' {escape '\'}
31) Mida tähendab andmebaasis sõna “määrdunud lugemine”?
Määrdunud lugemine tähendab "lugege väärtust, mis võib olla õige või mitte."
32) Mida sa mõtled kahefaasiliste kohustuste all?
Hajutatud tehinguprotsessis kasutatakse kahefaasilist sidumist. Kui mõni tehing on täitmisel, mõjutab see mitut andmebaasi. Kõikide andmebaaside üksteisega sünkroonimiseks kasutatakse kahefaasilist sissekandmist.
33) Mitu lukustussüsteemi on JDBC-s?
JDBC-s on saadaval kahte tüüpi lukustusi, mille abil saame hakkama rohkem kui ühe kasutajaga.
Kui kaks kasutajat vaatavad sama kirjet, siis lukustamist ei tehta. Kui üks kasutaja uuendab kirjet ja teine kasutaja uuendab sama kirjet, siis kasutame lukustamist.
- Optimistlik lukustus: see lukustab kirje ainult siis, kui hakkame värskendama.
- Pessimistlik lukustamine: see lukustab kirje „valimisest”, et vaadata, värskendada ja aega kinnitada.
34) Millised on JDBC erandid?
JDBC-s on nelja tüüpi erandeid.
- batchUpdate erand
- Andmete kärpimine
- SQL erand
- SQL hoiatus
35) Andke sammud DB-ga JDBC abil ühenduse loomiseks?
Andmebaasi ühendamiseks JDBC abil on kaks võimalust
- DriverManageri kasutamine:
See laadib juhiklassi klassi.forName(juhiklass) ja Class.forName() abil.
Laadimise postitamine annab juhtimise üle DriverManagerile.
DriverManager.getConnection() loob andmebaasile juurdepääsuks ühenduse.
- Andmeallika kasutamine:
Andmeallika puhul pole vaja DriverManagerit koos JNDI-ga kasutada. See otsib andmeallika nimeteenuse serverist. DataSource.getConnection() meetod tagastab andmebaasile ühenduse objekti.
36) Selgitage JDBC arhitektuuri?
JDBC API toetab andmebaasi jaoks nii 2- kui ka 3-tasemelisi mudeleid.
Kahetasandilise mudeli puhul suhtleb Java-rakendus andmeallikaga
Kolmetasandilise mudeli puhul suunatakse käsud ümber teenuste "keskmise tasandi" juurde. Pärast seda saadetakse andmeallikale käsud.
37) Millised on JDBC 4.0 uued funktsioonid?
Uued funktsioonid on
- Automaatne laadimine JDBC draiveriklassi järgi
- Täiustatud ühendusehaldus
- RowId SQL on lubatud
- Andmekogum, mis on juurutatud SQL-i abil, kasutades märkusi
- SQL-i erandite käsitlemise täiustused
- SQL-i toetamine XML failid
38) Milliseid pakette JDBC-s kasutatakse?
JDBC-s kasutatakse 8 paketti –
- sql.Driver
- Ühendus
- väljavõte
- Ettevalmistatud avaldus
- Callable Statement
- Tulemuskomplekt
- ResultSetMetaData
- DatabaseMetaData
39) Kui palju RowSeti on JDBC-s saadaval?
Saadaval on kahte tüüpi ridade komplekte:
- seotud – Ühendatud RowSeti objekt loob andmebaasiga kohe ühenduse. Kui rakendus lõpeb, lõpeb ka ühendatud RowSeti objekt.
- Ühendus katkestatud – Lahtiühendatud RowSeti objekt loob ühenduse andmebaasiga pärast nõutud päringu täitmist.
40) Mida tähendab ühendus?
Ühendusliides koosneb andmebaasiga suhtlemise meetoditest.
41) Selgitage JDBC salvestuspunkti?
Salvestuspunkt tähistab punkti, kuhu praegune tehing saab tagasi pöörduda. Selle asemel, et kõik oma muudatused tagasi pöörata, võib ta valida ainult mõne muudatuse tagasipööramise.
42) Loetlege DataSource'i kasutamise eelised?
Andmeallikas jagab tööd administraatori ja programmeerija/arendaja vahel.
Administraator loob DataSource'i objekti ja seob selle JNDI registriga. Programmeerija/arendaja hangib DataSource'i objekti registrist. Seejärel loob see ühenduse andmebaasiga.
43) Mis on põhjus, miks me vajame JdbcRowSeti, nagu ResultSeti ümbris?
Saame kasutada ResultSet objekti JavaBeansi komponendina.
- JdbcRowSeti saab kasutada ka JavaBeansi komponendina. Sellepärast saab seda luua ja konfigureerida projekteerimise või kompileerimise ajal ning käivitada tööajal.
- Kõik jdbcRowSeti objektid on keritavad ja värskendatavad.
44) Mitmel viisil saame tulemuste komplekti vaadata?
ResultSeti vaatamiseks on kaks võimalust
- veerg
- veeru indeks.
Näide: getInt(String veeruNimi), getInt(int veeruindeks)
45) Mitmel viisil saate tulemuste komplekti värskendada?
Järgmised meetodid aitavad teil tulemuste komplekti värskendada
- updateRow()
- deleteRow()
- refreshRow()
- cancelRowUpdates()
- insertRow()
46) Miks peaksime Javas andmebaasiühendused sulgema?
Parima tavana peame sulgema tulemuskomplekti, avalduse ja ühenduse. Kui ühendus tuleb basseinist, saadetakse ühendus sulgemisel uuesti basseini tagasi. Teeme seda lõpuks{} plokis, sest kui juhtub mõni erand, on meil siiski võimalus see sulgeda.
47) Miks me kasutame JDBC-s blob-andmetüüpe?
Neid kasutatakse suure hulga andmete, näiteks piltide, filmide jms salvestamiseks andmebaasi.
48) Kuidas määrata ResultSetis atribuut Concurrency?
Samaaegsuse taset on kaks
- CONCUR_READ_ONLY – see on ainult lugemiseks.
- CONCUR_UPDATABLE – see on nii lugemiseks kui ka värskendamiseks.
49) Mis vahe on kliendi ja serveri andmebaasi kursoril?
Serveripoolne kursor tähendab, et andmed ja tulemused salvestatakse serverisse. Ainult siis, kui kliendile saadetakse nõutud andmed.
Kliendipoolne kursor tähendab kõiki kliendi asukohta saadetud andmeid.
50) Kuidas sisestada pilte JDBC abil andmebaasi?
Pildid andmebaasis, mis kasutavad andmetüüpi BLOB, kus pilt salvestatakse baitivoona. Allpool olev kood näitab, kuidas pilt DB-sse sisestada.
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();
Need intervjuu küsimused aitavad ka teie viva (suuline)
väga kasutatav õpilaste jaoks …………
parim