Top 50 JDBC-interviewspørgsmål og -svar (2025)
Her er Java Database Connectivity (JDBC) interviewspørgsmål og svar til friskere såvel som erfarne kandidater til at få deres drømmejob.
Gratis PDF-download: JDBC-interviewspørgsmål
1) Hvad er JDBC?
JDBC står for Java Database Connectivity. JDBC er en Java API, der kommunikerer med databasen og udfører SQLquery.
2) Hvad er en JDBC-driver, og hvor mange JDBC-drivere er tilgængelige?
JDBC-driveren indeholder klasser og grænseflader, der hjælper Java-applikation og database.
Der er 4 typer JDBC-drivere.
- Type 1-driver eller JDBC-ODBC-brodriver.
- Type 2 driver eller Native-API, delvist Java-driver.
- Type 3-driver eller netværksprotokol, ren Java-driver.
- Type 4-driver eller Native-protokol, ren Java-driver.
3) Hvordan kan jeg forbinde MySQL eller Oracle med 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; }
Kode forklaring
Class.forName opretter en forekomst af JDBC-driver og registrerer med DriverManager.
getConnection () metoden etablerer altid en forbindelse til en database.
Vi skal oprette et Statement-objekt ud fra ovenstående connection-objekt. Sætningen returnerer resultset-objektet. ResultSet.next() betyder, at hvis resultatsættet stadig returnerer en række.
4) Hvilken JDBC-driver er den hurtigste kører?
Type 4-driver eller Native-protokol, ren Java-driver, er den hurtigste driver.
5) Hvad er JDBC API-komponenterne?
Der er fire typer komponenter
- JDBC API
- JDBC Driver Manager
- JDBC Test Suite
- JDBC-ODBC Bridge
6) Hvad er JDBC-udsagn?
Der er 3 typer af JDBC-erklæringer, som angivet nedenfor:
- StatementDen vil udføre SQL forespørgsel (statisk SQL-forespørgsel) mod databasen.
- Udarbejdet erklæring: Bruges når vi ønsker at udføre en SQL-sætning gentagne gange. Inputdata er dynamiske og tages som input under kørsel.
- Kaldbar erklæring: Bruges når vi ønsker at udføre lagrede procedurer.
7) Hvordan kan vi udføre lagrede procedurer?
Lagrede procedurer kan udføres ved hjælp af JDBCcallable-sætning. Her er koden.
Connection conn = null; CallableStatement callStmt = conn.prepareCall("{call myStoreproc(?, ?)}"); callStmt.setString(1, "abcdefg");
8) Hvad er fordelene ved at bruge PreparedStatement i Java?
Prepared Statement bruges til at udføre de samme SQL-sætninger gentagne gange. Den udarbejdede erklæring kompileres kun én gang, selvom den har brugt "n" antal gange
9) Hvad er ResultSet?
Java.sql.ResultSet-grænsefladen betyder resultatsættet af en SQL-forespørgsel. Det betyder, at en markør peger på en række i en tabel; det peger på før første række.
10) Hvilke typer resultatsæt er der?
Der er tre typer ResultSet tilgængelige. Hvis vi ikke erklærer noget resultatsæt, betyder det, at vi ringer til TYPE_FORWARD_ONLY
- TYPE_FORWARD_ONLY: markøren kan kun flyttes fremad.
- TYPE_SCROLL_INSENSITIVE: markøren kan bevæge sig frem og tilbage, men ikke følsom.
- TYPE_SCROLL_SENSITIVE: markøren kan bevæge sig frem og tilbage, men den er følsom
11) Forklar forskellen mellem RowSet vs. ResultSet i JDBC?
I en ResultSet-handleforbindelse til en DB kan vi ikke lave Result som et serialiseret objekt.
På grund af ovenstående problem kan vi ikke sende Resultset over netværket.
RowSet udvider ResultSet-grænsefladen, så den indeholder alle metoder fra ResultSet. RowSet er serialiseret.
Så vi kan overføre Rowset fra en klasse til en anden klasse, fordi den ikke har nogen forbindelse med databasen.
12) Hvorfor ville du bruge setAutoCommit(false) i JDBC?
Hvis du vil slå Auto Commit fra, skal du indstille connection.setAutoCommit(false)
13) Hvad er databaseadvarsler i JDBC, og hvordan kan vi håndtere databaseadvarsler i JDBC?
SQL-advarsel eller Database-advarsel er underklassen af SQLException-klassen. Vi kan håndtere det ved at bruge metoden getWarnings() på Connection, Statement og ResultSet
14) Kan jeg få et null ResultSet?
Nej, vi kan ikke få null Resultset. ResultSet.next() kan returnere null, hvis den næste post ikke indeholder en række.
15) Hvad mener du med Metadata, og hvorfor bruger vi dem?
Metadata betyder data eller information om andre data. Vi bruger metadata til at få databaseproduktversion, drivernavn, det samlede antal tabeller og visninger.
16) Hvad er forskellen mellem at udføre, executeQuery, executeUpdate i JDBC?
execute(): den kan bruges til enhver form for SQL-forespørgsel.
executeQuery(): den kan bruges til udvalgt forespørgsel.
executeUpdate(): den kan bruges til at ændre/opdatere tabel.
17) Hvad er databaseforbindelse pooling? Fordele ved at bruge en tilslutningspool?
Forbindelsespooling betyder, at forbindelser vil blive gemt i cachen, og vi kan genbruge dem i fremtiden.
Fordel:
- Det er hurtigere
- Forbindelsespooling bliver lettere at diagnosticere og analysere databaseforbindelse.
18) Hvad er DriverManager-klassens funktion?
Det er en grænseflade mellem bruger og drivere. DriverManager sporer al aktivitet mellem en database og den relevante driver.
19) Hvad er meningen med batchopdateringer?
Batchopdateringer betyder at udføre et sæt/gruppe af SQL-forespørgsler på én gang.
Batchopdateringer kan kun bruges til at indsætte, opdatere og slette, men ikke til udvalgte forespørgsler.
20) Hvor mange pakker er tilgængelige i JDBC API?
To typer pakker er tilgængelige i JDBC API
- java.sql
- javax.sql
21) Hvad er returtypen af execute, executeQuery og executeUpdate?
Returtype for udførelse er boolesk
Returtypen for executeQuery er ResultSet-objekt
Returtype for executeUpdate er int
22) Resultatsæts indeks Starter med 0 eller 1?
Resultatsættets indeks starter med 1.
23) Hvilken rolle spiller Class.forName under indlæsning af drivere?
Class.forName opretter en forekomst af JDBC-driver og registrerer med DriverManager.
24) JDBC-ODBC Bridge er multi-threaded eller ej?
Nej, JDBC-ODBC Bridge bruger synkroniserede metoder til at serialisere alle opkald til ODBC.
25) Hvilken grænseflade håndterer transaktionsstyring i JDBC?
Connection interface håndterer transaktionsstyring i JDBC. Det giver metode til commit (), rollback () osv.
26) Hvorfor opstår fejlen "Ingen passende driver"?
Ingen passende driver" opstår, når vi kalder DriverManager.getConnection-metoden,
det kan opstå af følgende årsager:
- ude af stand til at indlæse nøjagtige JDBC-drivere, før du kalder getConnection-metoden.
- Det kan være ugyldig eller forkert JDBC URL.
27) Udarbejdede erklæringer er hurtigere. Hvorfor?
Forberedt sætningsudførelse er hurtigere end direkte eksekvering, fordi sætningen kun kompileres én gang. Forberedte sætninger og JDBC-driver er forbundet med hinanden under udførelsen, og der er ingen forbindelsesomkostninger.
28) Er det muligt at oprette forbindelse til flere databaser? Kan vi ved hjælp af en enkelt erklæring opdatere eller udtrække data fra to eller tre eller mange databaser?
Ja, det er muligt at oprette forbindelse til flere databaser på samme tid, men det afhænger af den specifikke driver.
For at opdatere og udtrække data fra de forskellige databaser kan vi bruge den enkelte sætning. Men vi har brug for middleware til at håndtere flere databaser eller en enkelt database.
29) Fortæl mig forskellen mellem setMaxRows(int) og SetFetchSize(int)?
setMaxRows(int) | SetFetchSize(int)? |
---|---|
Definerer, hvor mange rækker et resultatsæt kan indeholde ad gangen | Definerer antallet af rækker, der vil blive læst fra databasen. |
30) Fortæl mig om specielle karakterer?
Et specialtegn indledes med et escape-tegn. Eksempel –
SELECT NAME FROM TABLE WHERE NAME LIKE '\_%' {escape '\'}
31) Hvad er meningen med "dirty read" i databasen?
Beskidt læsning betyder "læs den værdi, der kan være korrekt eller måske ikke er korrekt."
32) Hvad mener du med tofase-commits?
Tofaset commit bruges i distribueret transaktionsproces. Hvis en transaktion udføres, og det vil påvirke flere databaser. To fase commits vil blive brugt til at gøre alle databaser synkroniserede med hinanden.
33) Hvor mange låsesystemer er der i JDBC?
To typer låse er tilgængelige i JDBC, hvormed vi kan håndtere mere end én bruger.
Hvis to brugere ser den samme post, udføres der ingen låsning. Hvis den ene bruger opdaterer en post, og den anden bruger også opdaterer den samme post, bruger vi låsning på det tidspunkt.
- Optimistisk låsning: det låser kun posten, når vi skal "opdatere."
- Pessimistisk låsning: det vil låse posten fra "vælg" for at se, opdatere og binde tid.
34) Hvad er undtagelserne i JDBC?
Der er fire typer undtagelser i JDBC.
- batchUpdate undtagelse
- Data trunkering
- SQL-undtagelse
- SQL-advarsel
35) Giv trin til at oprette forbindelse til DB'en ved hjælp af JDBC?
Der er to måder at forbinde database ved hjælp af JDBC
- Brug af DriverManager:
Det vil indlæse driverklassen ved hjælp af class.forName(driver class) og Class.forName().
Efter indlæsning overføres kontrollen til DriverManager.
DriverManager.getConnection() vil oprette forbindelsen for at få adgang til databasen.
- Brug af datakilde:
For DataSource er det ikke nødvendigt at bruge DriverManager ved hjælp af JNDI. Den vil søge efter DataSource fra navngivningstjenesteserveren. DataSource.getConnection()-metoden returnerer Connection-objektet til databasen.
36) Forklar JDBC-arkitekturen?
JDBC API understøtter både 2-tier og 3-tier modeller til databasen.
I 2-tiers model interagerer Java-applikation med datakilden
I 3-tiers model omdirigeres kommandoer til et "mellemtrin" af tjenester. Derefter sendes kommandoer til datakilden.
37) Hvilke nye funktioner er tilgængelige i JDBC 4.0?
De nye funktioner er
- Automatisk indlæsning af JDBC-driverklasse
- Forbedret forbindelsesstyring
- RowId SQL aktiveret
- Datasæt implementeret af SQL ved hjælp af annoteringer
- Forbedringer af SQL-undtagelseshåndtering
- Understøtter SQL XML filer
38) Hvilke pakker bruges i JDBC?
Der bruges 8 pakker i JDBC –
- sql.driver
- Forbindelse
- Statement
- Forberedt Erklæring
- CallableStatement
- Resultat Indstil
- ResultSetMetaData
- DatabaseMetaData
39) Hvor mange RowSet er tilgængelige i JDBC?
Der er to typer rækkesæt tilgængelige:
- forbundet – Et tilsluttet RowSet-objekt opretter forbindelse til databasen øjeblikkeligt. Hvis applikationen afsluttes, afsluttes det tilsluttede RowSet-objekt også.
- afbrudt – Et afbrudt RowSet-objekt opretter forbindelse til databasen efter udførelse af den påkrævede forespørgsel.
40) Hvad er meningen med forbindelse?
Forbindelsesgrænsefladen består af metoder til interaktion med databasen.
41) Forklar JDBC Savepoint?
Et sparepunkt repræsenterer et punkt, som den aktuelle transaktion kan rulle tilbage til. I stedet for at rulle alle sine ændringer tilbage, kan den vælge kun at rulle nogle af dem tilbage.
42) Liste fordelene ved at bruge DataSource?
Datakilden fordeler arbejdet mellem administrator og programmør/udvikler.
Administratoren opretter et DataSource-objekt og forbinder det med JNDI-registret. En programmør/udvikler henter DataSource-objektet fra registreringsdatabasen. Derefter etablerer den forbindelsen til databasen.
43) Hvad er grunden til, at vi har brug for et JdbcRowSet som omslaget omkring ResultSet?
Vi kan bruge ResultSet-objektet som en JavaBeans-komponent.
- Et JdbcRowSet kan også bruges som en JavaBeans-komponent. Det er derfor, det kan oprettes og konfigureres ved design- eller kompileringstidspunkt og udføres ved kørsel.
- Alle jdbcRowSet-objekter kan rulles og opdateres.
44) På hvor mange måder kan vi se et resultatsæt?
Der er 2 måder at se ResultSet på
- kolonne
- kolonneindeks.
Eksempel: getInt(String columnName), getInt(int columnIndex)
45) Hvor mange måder kan du opdatere et resultatsæt på?
Følgende metoder hjælper dig med at opdatere resultatsættet
- updateRow()
- deleteRow()
- refreshRow()
- annuller RowUpdates()
- insertRow()
46) Hvorfor skal vi lukke databaseforbindelser i Java?
Som en best practice skal vi lukke resultatsættet, redegørelsen og forbindelsen. Hvis forbindelsen kommer fra en pool, sendes forbindelsen ved lukning tilbage til poolen til genbrug. Vi gør dette i den endelige{} blok, for hvis der opstår en undtagelse, så har vi stadig chancen for at lukke denne.
47) Hvorfor bruger vi blob-datatyper i JDBC?
Disse bruges til at gemme en stor mængde data i databasen som billeder, film osv.
48) Hvordan indstilles attributten Concurrency i ResultSet?
Der er to samtidighedsniveauer
- CONCUR_READ_ONLY – Det er kun til læsning.
- CONCUR_UPDATABLE − Det er både til læsning og opdatering.
49) Hvad er forskellen mellem klient- og serverdatabasemarkører?
Markør på serversiden betyder, at data og resultater gemmes på serveren. Kun når anmodet data sendes til klienten.
Markør på klientsiden betyder alle data sendt til klientens placering.
50) Hvordan indsætter du billeder i databasen ved hjælp af JDBC?
Billeder i databasen ved hjælp af BLOB-datatypen, hvori billedet er gemt som en bytestrøm. Nedenstående kode viser, hvordan man indsætter billedet i 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();
Disse interviewspørgsmål vil også hjælpe i din viva(orals)
meget brugbart for eleverne………..
Bedst