50 nejlepších otázek a odpovědí na rozhovory JDBC (2025)

Zde jsou otázky a odpovědi na pohovory Java Database Connectivity (JDBC) pro začátečníky i zkušené kandidáty, aby získali svou vysněnou práci.

Zdarma ke stažení PDF: Otázky k rozhovoru JDBC


1) Co je to JDBC?

JDBC je zkratka pro Java Database Connectivity. JDBC je Java API, které komunikuje s databází a spouští SQLquery.


2) Co je ovladač JDBC a kolik ovladačů JDBC je k dispozici?

Ovladač JDBC obsahuje třídy a rozhraní, která pomáhají aplikacím a databázi Java.

Existují 4 typy ovladačů JDBC.

  1. Ovladač typu 1 nebo ovladač mostu JDBC-ODBC.
  2. Ovladač typu 2 nebo Native-API, částečně Java ovladač.
  3. Ovladač typu 3 nebo síťový protokol, čistě Java ovladač.
  4. Ovladač typu 4 nebo ovladač nativního protokolu, čistě Java.

3) Jak se mohu připojit MySQL nebo Oracle s Javou?

//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; }

Vysvětlení kódu

Class.forName vytvoří instanci ovladače JDBC a zaregistruje se pomocí DriverManager.

Metoda getConnection () vždy naváže připojení k databázi.

Potřebujeme vytvořit objekt Statement z výše uvedeného objektu connection. Příkaz vrátí objekt resultset. ResultSet.next() znamená, že výsledná sada stále vrací řádek.


4) Který ovladač JDBC je nejrychlejší?

Ovladač typu 4 nebo Native-protocol, čistě Java ovladač, je nejrychlejší ovladač.


5) Jaké jsou komponenty JDBC API?

Existují čtyři typy součástí

  1. JDBC API
  2. Správce ovladačů JDBC
  3. Testovací sada JDBC
  4. Most JDBC-ODBC
Otázky k rozhovoru JDBC
Otázky k rozhovoru JDBC

6) Jaká jsou prohlášení JDBC?

Existují 3 typy prohlášení JDBC, jak je uvedeno níže:

  1. výkazBude provedeno SQL dotaz (statický SQL dotaz) proti databázi.
  2. Připravené prohlášení: Používá se, když chceme opakovaně spouštět SQL příkazy. Vstupní data jsou dynamická a přijímají se za běhu.
  3. Výkaz k zaplacení: Používá se, když chceme provádět uložené procedury.

7) Jak můžeme provádět uložené procedury?

Uložené procedury lze spustit pomocí příkazu JDBCcallable. Zde je kód.

Connection conn = null;

CallableStatement callStmt = conn.prepareCall("{call myStoreproc(?, ?)}");

callStmt.setString(1, "abcdefg");


8) Jaké jsou výhody použití PreparedStatement v Javě?

Připravený příkaz se používá k opakovanému provádění stejných příkazů SQL. Připravený příkaz je zkompilován pouze jednou, i když byl mnohokrát použit „n“.


9) Co je ResultSet?

Rozhraní java.sql.ResultSet znamená sadu výsledků dotazu SQL. To znamená, že kurzor ukazuje na řádek tabulky; ukazuje před první řadu.


10) Jaké jsou typy ResultSet?

K dispozici jsou tři typy sady ResultSet. Pokud nedeklarujeme žádnou ResultSet, znamená to, že voláme TYPE_FORWARD_ONLY

  1. TYPE_FORWARD_ONLY: kurzor se může pohybovat pouze dopředu.
  2. TYPE_SCROLL_INSENSITIVE: kurzor se může pohybovat dopředu a dozadu, ale není citlivý.
  3. TYPE_SCROLL_SENSITIVE: kurzor se může pohybovat dopředu a dozadu, ale je citlivý

11) Vysvětlete rozdíl mezi RowSet a ResultSet v JDBC?

V připojení popisovače ResultSet k DB nemůžeme vytvořit Result jako serializovaný objekt.

Kvůli výše uvedenému problému nemůžeme předat Resultset přes síť.

RowSet rozšiřuje rozhraní ResultSet, takže obsahuje všechny metody z ResultSet. Sada řádků je serializována.

Můžeme tedy předat sadu řádků z jedné třídy do jiné třídy, protože nemá žádné spojení s databází.


12) Proč byste použili setAutoCommit(false) v JDBC?

Pokud chcete vypnout Auto Commit, nastavte connection.setAutoCommit(false)


13) Co jsou databázová varování v JDBC a jak můžeme zacházet s databázovými varováními v JDBC?

Varování SQL nebo varování databáze je podtřídou třídy SQLException. Můžeme to zvládnout pomocí metody getWarnings() na Connection, Statement a ResultSet


14) Mohu získat nulovou sadu výsledků?

Ne, nemůžeme získat nulovou sadu výsledků. ResultSet.next() může vrátit hodnotu null, pokud další záznam neobsahuje řádek.


15) Co rozumíte metadaty a proč je používáme?

Metadata znamenají data nebo informace o jiných datech. Metadata používáme k získání verze databázového produktu, názvu ovladače, celkového počtu tabulek a zobrazení.


16) Jaký je rozdíl mezi spuštěním, spuštěním dotazu, spuštěním aktualizace v JDBC?

execute(): lze jej použít pro jakýkoli druh dotazu SQL.

executeQuery() : lze jej použít pro výběrový dotaz.

executeUpdate(): lze jej použít ke změně/aktualizaci tabulky.


17) Co je sdružování databázových připojení? Výhody použití fondu připojení?

Sdružování připojení znamená, že připojení budou uložena v mezipaměti a v budoucnu je můžeme znovu použít.

Výhoda:

  1. Je to rychlejší
  2. Sdružování připojení se stává jednodušší pro diagnostiku a analýzu připojení k databázi.

18) Jaká je funkce třídy DriverManager?

Jedná se o rozhraní mezi uživatelem a ovladači. DriverManager sleduje veškerou aktivitu mezi databází a příslušným ovladačem.


19) Jaký je význam dávkových aktualizací?

Dávkové aktualizace znamená provedení sady/skupiny SQL dotazů najednou.

Dávkové aktualizace lze použít pouze pro vložení, aktualizaci a odstranění, ale ne pro výběrový dotaz.


20) Kolik balíčků je dostupných v JDBC API?

V JDBC API jsou k dispozici dva typy balíčků

  1. java.sql
  2. javax.sql

21) Jaký je návratový typ spuštění, spuštění dotazu a spuštění aktualizace?

Návratový typ provedení je booleovský

Návratový typ executeQuery je objekt ResultSet

Návratový typ spuštěníAktualizace je int


22) Index sady výsledků Začíná 0 nebo 1?

Index sady výsledků začíná 1.


23) Jaká je role Class.forName při načítání ovladačů?

Class.forName vytvoří instanci ovladače JDBC a zaregistruje se pomocí DriverManager.


24) JDBC-ODBC Bridge je vícevláknový nebo ne?

Ne, JDBC-ODBC Bridge používá synchronizované metody k serializaci všech volání uskutečněných na ODBC.


25) Které rozhraní zajišťuje správu transakcí v JDBC?

Rozhraní připojení zajišťuje správu transakcí v JDBC. Poskytuje metodu pro odevzdání (), vrácení zpět () atd.


26) Proč dochází k chybě „Není vhodný ovladač“?

Žádný vhodný ovladač“ se objeví, když voláme metodu DriverManager.getConnection,

může nastat z následujících důvodů:

  • nelze načíst přesné ovladače JDBC před voláním metody getConnection.
  • Může být neplatná nebo nesprávná adresa URL JDBC.

27) Připravené výpisy jsou rychlejší. Proč?

Spuštění připraveného příkazu je rychlejší než přímé provedení, protože příkaz je zkompilován pouze jednou. Připravené příkazy a ovladač JDBC jsou během provádění vzájemně propojeny a nevznikají žádné režie připojení.


28) Je možné se připojit k více databázím? Můžeme pomocí jednoho příkazu aktualizovat nebo extrahovat data ze dvou nebo tří nebo mnoha databází?

Ano, je možné se připojit k více databázím současně, ale záleží na konkrétním ovladači.

Pro aktualizaci a extrakci dat z jiné databáze můžeme použít jeden příkaz. Potřebujeme však middleware, který se bude zabývat více databázemi nebo jednou databází.


29) Řekněte mi rozdíl mezi setMaxRows(int) a SetFetchSize(int)?

setMaxRows(int) SetFetchSize(int)?
Definuje, kolik řádků může sada výsledků obsahovat najednou Definuje počet řádků, které budou načteny z databáze.

30) Řekni mi o speciálních postavách?

Speciálnímu znaku předchází znak escape. Příklad –

SELECT NAME FROM TABLE WHERE NAME LIKE '\_%' {escape '\'}

31) Co znamená „špinavé čtení“ v databázi?

Nečisté čtení znamená „přečtěte hodnotu, která může být správná nebo nemusí být správná“.


32) Co myslíte dvoufázovými commity?

Dvoufázové potvrzení se používá v procesu distribuovaných transakcí. Pokud se provádí nějaká transakce a ovlivní to více databází. K zajištění vzájemné synchronizace všech databází budou použity dvoufázové odevzdání.


33) Kolik uzamykacích systémů je v JDBC?

V JDBC jsou k dispozici dva typy zamykání, pomocí kterých můžeme obsluhovat více než jednoho uživatele.

Pokud si dva uživatelé prohlížejí stejný záznam, pak se neprovede žádné uzamčení. Pokud jeden uživatel aktualizuje záznam a druhý uživatel také aktualizuje stejný záznam, pak použijeme uzamčení.

  1. Optimistické zamykání: zamkne záznam pouze tehdy, když se chystáme „aktualizovat“.
  2. Pesimistické zamykání: uzamkne záznam z „vybrat“ pro zobrazení, aktualizaci a čas odevzdání.

34) Jaké jsou výjimky v JDBC?

V JDBC existují čtyři typy výjimek.

  1. Výjimka batchUpdate
  2. Zkrácení dat
  3. Výjimka SQL
  4. Upozornění SQL

35) Uveďte kroky pro připojení k DB pomocí JDBC?

Existují dva způsoby připojení databáze pomocí JDBC

  1. Použití DriverManager:

Načte třídu ovladače pomocí class.forName(třída ovladače) a Class.forName().

Po načtení předá řízení DriverManager.

DriverManager.getConnection() vytvoří připojení pro přístup k databázi.

  1. Použití DataSource:

Pro DataSource není nutné používat DriverManager s pomocí JNDI. Ten vyhledá DataSource ze serveru Naming Service. Metoda DataSource.getConnection() vrátí objekt Connection do databáze.


36) Vysvětlete architekturu JDBC?

JDBC API podporuje 2vrstvé i 3vrstvé modely databáze.

Ve dvouvrstvém modelu Java aplikace interaguje se zdrojem dat

Dvouvrstvá architektura JDBC

Ve 3vrstvém modelu jsou příkazy přesměrovány na „střední vrstvu“ služeb. Poté se příkazy odešlou do zdroje dat.

Dvouvrstvá architektura JDBC


37) Jaké jsou nové funkce dostupné v JDBC 4.0?

Nové funkce jsou

  • Automatické načítání podle třídy ovladače JDBC
  • Vylepšená správa připojení
  • RowId SQL povoleno
  • Datová sada implementovaná SQL pomocí anotací
  • Vylepšení zpracování výjimek SQL
  • Podpora SQL XML soubory

38) Jaké balíčky se používají v JDBC?

V JDBC se používá 8 balíčků –

  1. sql.Driver
  2. Přípojka
  3. výkaz
  4. Připravené prohlášení
  5. CallableStatement
  6. Sada výsledků
  7. ResultSetMetaData
  8. DatabaseMetaData

39) Kolik sad řádků je dostupných v JDBC?

K dispozici jsou dva typy sad řádků:

  1. Spojený – Připojený objekt RowSet se okamžitě připojí k databázi. Pokud se aplikace ukončí, ukončí se také připojený objekt RowSet.
  2. Odpojeno – Odpojený objekt RowSet se připojí k databázi po provedení požadovaného dotazu.

40) Co znamená spojení?

Spojovací rozhraní se skládá z metod pro interakci s databází.


41) Vysvětlete JDBC Savepoint?

Záchranný bod představuje bod, ke kterému se může aktuální transakce vrátit. Místo vrácení všech změn zpět se může rozhodnout vrátit zpět pouze některé z nich.


42) Vyjmenujte výhody používání DataSource?

Zdrojem dat je rozdělení práce mezi administrátora a programátora/vývojáře.

Administrátor vytvoří objekt DataSource a propojí ho s registrem JNDI. Programátor/vývojář načte objekt DataSource z registru. Poté naváže spojení s databází.


43) Jaký je důvod, proč potřebujeme JdbcRowSet jako obal kolem ResultSet?

Jako komponentu JavaBeans můžeme použít objekt ResultSet.

  • JdbcRowSet lze také použít jako komponentu JavaBeans. To je důvod, proč může být vytvořen a konfigurován při návrhu nebo kompilaci a spuštěn za běhu.
  • Všechny objekty jdbcRowSet lze posouvat a aktualizovat.

44) Kolika způsoby můžeme zobrazit sadu výsledků?

Existují 2 způsoby, jak zobrazit sadu výsledků

  1. sloupec
  2. index sloupce.

Příklad: getInt(String columnName), getInt(int columnIndex)


45) Kolika způsoby můžete aktualizovat sadu výsledků?

Následující metody vám pomohou aktualizovat sadu výsledků

  • updateRow()
  • deleteRow()
  • refreshRow()
  • cancelRowUpdates()
  • insertRow()

46) Proč bychom měli zavírat databázová připojení v Javě?

Jako osvědčený postup musíme uzavřít sadu výsledků, příkaz a spojení. Pokud připojení přichází z fondu, při uzavření je připojení odesláno zpět do fondu k opětovnému použití. Děláme to v bloku final{}, protože pokud dojde k nějaké výjimce, stále máme šanci to uzavřít.


47) Proč v JDBC používáme datové typy blob?

Ty se používají k ukládání velkého množství dat do databáze, jako jsou obrázky, filmy atd.


48) Jak nastavit atribut Concurrency v ResultSet?

Existují dvě úrovně souběžnosti

  1. CONCUR_READ_ONLY – Slouží pouze ke čtení.
  2. CONCUR_UPDATABLE − Je pro čtení i aktualizaci.

49) Jaký je rozdíl mezi klientskými a serverovými databázovými kurzory?

Kurzor na straně serveru znamená, že data a výsledky jsou uloženy na serveru. Teprve když jsou klientovi zaslána požadovaná data.

Kurzor na straně klienta znamená všechna data odeslaná do umístění klienta.


50) Jak vkládáte obrázky do databáze pomocí JDBC?

Obrázky v databázi používající datový typ BLOB, kde je obrázek uložen jako byte stream. Níže uvedený kód ukazuje, jak vložit obrázek do 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();

Tyto otázky na pohovoru také pomohou ve vašem životě (ústních)

Sdílet

2 Komentáře

  1. avatar Jahnavi říká:

    velmi užitečné plné pro studenty ……….

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *