Topp 50 JDBC-intervjufrågor och svar (2025)
Här är Java Database Connectivity (JDBC) intervjufrågor och svar för nybörjare såväl som erfarna kandidater för att få sitt drömjobb.
Gratis PDF-nedladdning: JDBC-intervjufrågor
1) Vad är JDBC?
JDBC står för Java Database Connectivity. JDBC är ett Java API som kommunicerar med databasen och exekverar SQLquery.
2) Vad är en JDBC-drivrutin och hur många JDBC-drivrutiner finns tillgängliga?
JDBC-drivrutinen innehåller klasser och gränssnitt som hjälper Java-applikationer och databas.
Det finns 4 typer av JDBC-drivrutiner.
- Typ 1-drivrutin eller JDBC-ODBC-bryggdrivrutin.
- Typ 2-drivrutin eller Native-API, delvis Java-drivrutin.
- Typ 3-drivrutin eller Network Protocol, ren Java-drivrutin.
- Typ 4-drivrutin eller Native-protocol, ren Java-drivrutin.
3) Hur kan jag ansluta 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; }
Kodförklaring
Class.forName skapar en instans av JDBC-drivrutinen och registrerar dig hos DriverManager.
getConnection () metoden upprättar alltid en anslutning till en databas.
Vi behöver skapa ett Statement-objekt från ovanstående connection-objekt. Satsen returnerar resultset-objektet. ResultSet.next() betyder om resultatmängden fortfarande returnerar en rad.
4) Vilken JDBC-förare är den snabbaste föraren?
Typ 4-drivrutin eller Native-protocol, ren Java-drivrutin, är den snabbaste föraren.
5) Vilka är JDBC API-komponenter?
Det finns fyra typer av komponenter
- JDBC API
- JDBC Driver Manager
- JDBC Test Suite
- JDBC-ODBC Bridge
6) Vilka är JDBC-påståendena?
Det finns tre typer av JDBC-uttalanden, enligt nedan:
- .Den kommer att köras SQL fråga (statisk SQL-fråga) mot databasen.
- Förberedt uttalande: Används när vi vill köra SQL-satser upprepade gånger. Indata är dynamiska och tas emot vid körning.
- Callable Statement: Används när vi vill exekvera lagrade procedurer.
7) Hur kan vi utföra lagrade procedurer?
Lagrade procedurer kan köras med JDBCcallable-satsen. Här är koden.
Connection conn = null; CallableStatement callStmt = conn.prepareCall("{call myStoreproc(?, ?)}"); callStmt.setString(1, "abcdefg");
8) Vilka är fördelarna med att använda PreparedStatement i Java?
Prepared Statement används för att köra samma SQL-satser upprepade gånger. Den förberedda satsen kompileras endast en gång trots att den använde "n" ett antal gånger
9) Vad är ResultSet?
Gränssnittet java.sql.ResultSet betyder resultatet av en SQL-fråga. Det betyder att en markör pekar på en rad i en tabell; den pekar på före första raden.
10) Vilka typer av ResultSet?
Det finns tre typer av ResultSet är tillgängliga. Om vi inte deklarerar någon ResultSet betyder det att vi anropar TYPE_FORWARD_ONLY
- TYPE_FORWARD_ONLY: markören kan bara flyttas framåt.
- TYPE_SCROLL_INSENSITIVE: markören kan flyttas framåt och bakåt men inte känslig.
- TYPE_SCROLL_SENSITIVE: markören kan flyttas framåt och bakåt, men den är känslig
11) Förklara skillnaden mellan RowSet vs. ResultSet i JDBC?
I en ResultSet-hanteringsanslutning till en DB kan vi inte göra Result som ett serialiserat objekt.
På grund av ovanstående problem kan vi inte skicka Resultset över nätverket.
RowSet utökar ResultSet-gränssnittet så att det innehåller alla metoder från ResultSet. RowSet är serialiserat.
Så vi kan skicka Rowset från en klass till en annan klass eftersom den inte har någon koppling till databasen.
12) Varför skulle du använda setAutoCommit(false) i JDBC?
Om du vill stänga av Auto Commit ställer du in connection.setAutoCommit(false)
13) Vad är databasvarningar i JDBC och hur kan vi hantera databasvarningar i JDBC?
SQL-varning eller Databasvarning är underklassen till SQLException-klassen. Vi kan hantera det genom att använda metoden getWarnings() på Connection, Statement och ResultSet
14) Kan jag få en null ResultSet?
Nej, vi kan inte få null Resultset. ResultSet.next() kan returnera null om nästa post inte innehåller en rad.
15) Vad menar du med Metadata och varför vi använder det?
Metadata betyder data eller information om annan data. Vi använder metadata för att få databasproduktversion, drivrutinsnamn, det totala antalet tabeller och vyer.
16) Vad är skillnaden mellan att köra, executeQuery, executeUpdate i JDBC?
execute(): den kan användas för alla typer av SQL-frågor.
executeQuery(): den kan användas för utvald fråga.
executeUpdate(): den kan användas för att ändra/uppdatera tabell.
17) Vad är databasanslutningspooling? Fördelar med att använda en anslutningspool?
Anslutningspooling innebär att anslutningar kommer att lagras i cachen och vi kan återanvända dem i framtiden.
Fördel:
- Det är snabbare
- Anslutningspoolning blir lättare att diagnostisera och analysera databasanslutningar.
18) Vilken funktion har DriverManager-klassen?
Det är ett gränssnitt mellan användare och förare. DriverManager spårar all aktivitet mellan en databas och lämplig drivrutin.
19) Vad är meningen med batchuppdateringar?
Batchuppdateringar innebär att exekvera en uppsättning/grupp av SQL-frågor på en gång.
Batchuppdateringar kan endast användas för att infoga, uppdatera och ta bort men inte för att välja sökfråga.
20) Hur många paket är tillgängliga i JDBC API?
Två typer av paket är tillgängliga i JDBC API
- java.sql
- javax.sql
21) Vilken är returtypen för execute, executeQuery och executeUpdate?
Returtyp av exekvering är boolesk
Returtyp för executeQuery är ResultSet-objekt
Returtyp för executeUpdate är int
22) Resultatuppsättningens index Börjar med 0 eller 1?
Resultatuppsättningens index börjar med 1.
23) Vilken roll spelar Class.forName när drivrutiner laddas?
Class.forName skapar en instans av JDBC-drivrutinen och registrerar dig hos DriverManager.
24) JDBC-ODBC Bridge är flertrådig eller inte?
Nej, JDBC-ODBC Bridge använder synkroniserade metoder för att serialisera alla anrop som görs till ODBC.
25) Vilket gränssnitt hanterar transaktionshantering i JDBC?
Anslutningsgränssnitt hanterar transaktionshantering i JDBC. Det tillhandahåller metod för commit (), rollback () etc.
26) Varför uppstår felet "Ingen lämplig drivrutin"?
Ingen lämplig drivrutin” inträffar när vi anropar DriverManager.getConnection-metoden,
det kan uppstå av följande skäl:
- det går inte att ladda exakta JDBC-drivrutiner innan metoden getConnection anropas.
- Det kan vara ogiltig eller felaktig JDBC-URL.
27) Förberedda uttalanden går snabbare. Varför?
Exekvering av förberedd sats är snabbare än direkt exekvering eftersom satsen bara kompileras en gång. Förberedda uttalanden och JDBC-drivrutinen är anslutna till varandra under körning, och det finns inga anslutningskostnader.
28) Är det möjligt att ansluta till flera databaser? Kan vi med ett enda uttalande uppdatera eller extrahera data från två eller tre eller många databaser?
Ja, det är möjligt att ansluta till flera databaser samtidigt, men det beror på den specifika drivrutinen.
För att uppdatera och extrahera data från de olika databaserna kan vi använda den enda satsen. Men vi behöver mellanprogram för att hantera flera databaser eller en enda databas.
29) Berätta för mig skillnaden mellan setMaxRows(int) och SetFetchSize(int)?
setMaxRows(int) | SetFetchSize(int)? |
---|---|
Definierar hur många rader en resultatuppsättning kan innehålla åt gången | Definierar antalet rader som kommer att läsas från databasen. |
30) Berätta om specialkaraktärer?
Ett specialtecken föregås av ett escape-tecken. Exempel –
SELECT NAME FROM TABLE WHERE NAME LIKE '\_%' {escape '\'}
31) Vad är meningen med "smutsig läsning" i databasen?
Smutsig läsning betyder "läs värdet som kan vara korrekt eller kanske inte är korrekt."
32) Vad menar du med tvåfas commits?
Tvåfasig commit används i distribuerad transaktionsprocess. Om någon transaktion körs och det kommer att påverka flera databaser. Två fas-commits kommer att användas för att göra alla databaser synkroniserade med varandra.
33) Hur många låssystem finns det i JDBC?
Två typer av lås finns tillgängliga i JDBC genom vilka vi kan hantera mer än en användare.
Om två användare visar samma post, sker ingen låsning. Om en användare uppdaterar en post och den andra användaren också uppdaterar samma post, kommer vi då att använda låsning.
- Optimistisk låsning: det låser posten endast när vi ska "uppdatera."
- Pessimistisk låsning: det kommer att låsa posten från "select" för att visa, uppdatera och bestämma tid.
34) Vilka är undantagen i JDBC?
Det finns fyra typer av undantag i JDBC.
- batchUpdate undantag
- Data trunkering
- SQL-undantag
- SQL-varning
35) Ge steg för att ansluta till DB med JDBC?
Det finns två sätt att ansluta databasen med JDBC
- Använda DriverManager:
Den kommer att ladda förarklassen med hjälp av class.forName(driver class) och Class.forName().
Efter att ladda den kommer kontrollen att skickas till DriverManager.
DriverManager.getConnection() skapar anslutningen för att komma åt databasen.
- Använda datakälla:
För DataSource behöver man inte använda DriverManager med hjälp av JNDI. Den kommer att söka upp DataSource från namngivningstjänstens server. Metoden DataSource.getConnection() returnerar Connection-objektet till databasen.
36) Förklara JDBC-arkitekturen?
JDBC API stöder både 2-tier och 3-tier modeller för databasen.
I 2-lagers modell interagerar Java-applikationen med datakällan
I 3-nivåmodeller omdirigeras kommandon till en "mellannivå" av tjänster. Därefter skickas kommandon till datakällan.
37) Vilka är de nya funktionerna i JDBC 4.0?
De nya funktionerna är
- Automatisk laddning av JDBC-drivrutinsklass
- Förbättrad anslutningshantering
- RowId SQL aktiverad
- Datauppsättning implementerad av SQL med hjälp av anteckningar
- Förbättringar av SQL-undantagshantering
- Stöder SQL XML filer
38) Vilka är de paket som används i JDBC?
8 paket används i JDBC –
- sql.drivrutin
- förbindelse
- .
- Förberedt uttalande
- CallableStatement
- Resultatet satt
- ResultSetMetaData
- DatabaseMetaData
39) Hur många RowSet är tillgängliga i JDBC?
Det finns två typer av raduppsättningar:
- Ansluten – Ett anslutet RowSet-objekt ansluter till databasen omedelbart. Om applikationen avslutas avslutas också det anslutna RowSet-objektet.
- Osammanhängande – Ett frånkopplat RowSet-objekt ansluter till databasen efter körning av den begärda frågan.
40) Vad är meningen med anslutning?
Anslutningsgränssnitt består av metoder för interaktion med databasen.
41) Förklara JDBC Savepoint?
En räddningspunkt representerar en punkt som den aktuella transaktionen kan rulla tillbaka till. Istället för att rulla tillbaka alla ändringar kan den välja att rulla tillbaka bara några av dem.
42) Lista fördelarna med att använda DataSource?
Datakällan fördelar arbetet mellan administratör och programmerare/utvecklare.
Administratören skapar ett DataSource-objekt och kopplar det till JNDI-registret. En programmerare/utvecklare hämtar DataSource-objektet från registret. Sedan upprättar det en anslutning till databasen.
43) Vad är anledningen till att vi behöver ett JdbcRowSet som omslaget runt ResultSet?
Vi kan använda ResultSet-objektet som en JavaBeans-komponent.
- En JdbcRowSet kan också användas som en JavaBeans-komponent. Det är därför det kan skapas och konfigureras vid design eller kompilering och körs under körning.
- Alla jdbcRowSet-objekt är rullningsbara och uppdateringsbara.
44) På hur många sätt kan vi se en resultatuppsättning?
Det finns 2 sätt att se ResultSet
- kolumn
- kolumnindex.
Exempel: getInt(String columnName), getInt(int columnIndex)
45) På hur många sätt kan du uppdatera en resultatuppsättning?
Följande metoder hjälper dig att uppdatera resultatuppsättningen
- updateRow()
- deleteRow()
- refreshRow()
- cancelRowUpdates()
- insertRow()
46) Varför ska vi stänga databasanslutningar i Java?
Som en bästa praxis måste vi stänga resultatuppsättningen, uttalandet och kopplingen. Om anslutningen kommer från en pool, vid stängning, skickas anslutningen tillbaka till poolen för återanvändning. Vi gör detta i det sista{}-blocket, för om något undantag inträffar har vi fortfarande chansen att stänga detta.
47) Varför använder vi blobdatatyper i JDBC?
Dessa används för att lagra en stor mängd data i databasen som bilder, film, etc.
48) Hur ställer man in attributet Concurrency i ResultSet?
Det finns två samtidiga nivåer
- CONCUR_READ_ONLY – Det är bara för läsning.
- CONCUR_UPDATABLE − Det är för både läsning och uppdatering.
49) Vad är skillnaden mellan klient- och serverdatabasmarkörer?
Markör på serversidan betyder att data och resultat sparas på servern. Endast när efterfrågad data skickas till klienten.
Markör på klientsidan betyder all data som skickas till klientens plats.
50) Hur infogar du bilder i databasen med JDBC?
Bilder i databasen med BLOB-datatypen där bilden lagras som en byteström. Nedanstående kod visar hur man infogar bilden 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();
Dessa intervjufrågor kommer också att hjälpa dig i din viva (orals)
mycket användbar för studenterna………..
Bäst