Топ 50 на въпросите и отговорите за интервюто за JDBC (2025 г.)

Ето въпроси и отговори за интервю за Java Database Connectivity (JDBC) за новокурсници, както и за опитни кандидати, за да получат мечтаната работа.

Безплатно изтегляне на PDF: JDBC Въпроси за интервю


1) Какво е JDBC?

JDBC означава Java Database Connectivity. JDBC е Java API, който комуникира с базата данни и изпълнява SQLquery.


2) Какво е JDBC драйвер и колко JDBC драйвера са налични?

JDBC драйверът съдържа класове и интерфейси, които помагат на Java приложението и базата данни.

Има 4 вида JDBC драйвери.

  1. Драйвер тип 1 или JDBC-ODBC мостов драйвер.
  2. Тип 2 драйвер или Native-API, частично Java драйвер.
  3. Драйвер тип 3 или мрежов протокол, чист Java драйвер.
  4. Драйвер тип 4 или Native-протокол, чист Java драйвер.

3) Как мога да се свържа MySQL или Oracle с 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; }

Обяснение на кода

Class.forName създава екземпляр на JDBC драйвер и се регистрира в DriverManager.

методът getConnection () винаги установява връзка към база данни.

Трябва да създадем обект Statement от горния обект за свързване. Операторът ще върне обекта resultset. ResultSet.next() означава, че резултатният набор все още връща ред.


4) Кой JDBC драйвер е най-бързият драйвер?

Драйвер тип 4 или Native-протокол, чист Java драйвер, е най-бързият драйвер.


5) Какво представляват JDBC API компонентите?

Има четири вида компоненти

  1. JDBC API
  2. Мениджър на JDBC драйвери
  3. JDBC Test Suite
  4. JDBC-ODBC мост
Въпроси за интервю за JDBC
Въпроси за интервю за JDBC

6) Какво представляват изявленията на JDBC?

Има 3 вида JDBC изрази, както е дадено по-долу:

  1. ИзявлениеЩе се изпълни SQL заявка (статична SQL заявка) срещу базата данни.
  2. Подготвено становище: Използва се, когато искаме да изпълняваме SQL оператор многократно. Входните данни са динамични и се приемат по време на изпълнение.
  3. Декларация за извикване: Използва се, когато искаме да изпълним запомнени процедури.

7) Как можем да изпълним съхранени процедури?

Съхранените процедури могат да се изпълняват с помощта на оператор JDBCcallable. Ето кода.

Connection conn = null;

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

callStmt.setString(1, "abcdefg");


8) Какви са предимствата от използването на PreparedStatement в Java?

Prepared Statement се използва за многократно изпълнение на едни и същи SQL оператори. Подготвеният оператор се компилира само веднъж, въпреки че е използвал „n“ няколко пъти


9) Какво е ResultSet?

Интерфейсът java.sql.ResultSet означава набор от резултати от SQL заявка. Това означава, че курсорът сочи ред от таблица; сочи към преди първия ред.


10) Какви са видовете ResultSet?

Налични са три вида ResultSet. Ако не декларираме нито един ResultSet, това означава, че извикваме TYPE_FORWARD_ONLY

  1. TYPE_FORWARD_ONLY: курсорът може да се движи само напред.
  2. TYPE_SCROLL_INSENSITIVE: курсорът може да се движи напред и назад, но не е чувствителен.
  3. TYPE_SCROLL_SENSITIVE: курсорът може да се движи напред и назад, но е чувствителен

11) Обяснете разликата между RowSet и ResultSet в JDBC?

В връзка с манипулатор ResultSet към DB не можем да направим Result като сериализиран обект.

Поради горепосочения проблем, не можем да предадем Resultset през мрежата.

RowSet разширява интерфейса ResultSet, така че съдържа всички методи от ResultSet. RowSet е сериализиран.

Така че можем да предадем Rowset от един клас в друг клас, защото той няма връзка с базата данни.


12) Защо бихте използвали setAutoCommit(false) в JDBC?

Ако искате да изключите автоматичното ангажиране, задайте connection.setAutoCommit(false)


13) Какво представляват предупрежденията за база данни в JDBC и как можем да обработваме предупрежденията за база данни в JDBC?

SQL предупреждение или предупреждение за база данни е подкласът на класа SQLException. Можем да се справим с това, като използваме метода getWarnings() на Connection, Statement и ResultSet


14) Мога ли да получа нулев ResultSet?

Не, не можем да получим нулев набор от резултати. ResultSet.next() може да върне null, ако следващият запис не съдържа ред.


15) Какво имате предвид под метаданни и защо ги използваме?

Метаданни означава данни или информация за други данни. Използваме метаданни, за да получим версията на продукта на базата данни, името на драйвера, общия брой таблици и изгледи.


16) Каква е разликата между изпълнение, executeQuery, executeUpdate в JDBC?

execute(): може да се използва за всякакъв вид SQL заявка.

executeQuery(): може да се използва за заявка за избор.

executeUpdate(): може да се използва за промяна/актуализация на таблица.


17) Какво представлява обединяването на връзки към базата данни? Предимства от използването на пул за връзки?

Пулирането на връзки означава, че връзките ще се съхраняват в кеша и можем да ги използваме повторно в бъдеще.

Предимство:

  1. По-бързо е
  2. Обединяването на връзки става по-лесно за диагностициране и анализ на връзката с базата данни.

18) Каква е функцията на класа DriverManager?

Това е интерфейс между потребител и драйвери. DriverManager проследява цялата дейност между база данни и подходящия драйвер.


19) Какво е значението на пакетните актуализации?

Пакетните актуализации означава изпълнение на набор/група от SQL заявки наведнъж.

Пакетните актуализации могат да се използват само за вмъкване, актуализиране и изтриване, но не и за заявка за избор.


20) Колко пакета са налични в JDBC API?

В JDBC API са налични два типа пакети

  1. java.sql
  2. javax.sql

21) Какъв е връщаният тип на изпълнение, executeQuery и executeUpdate?

Върнатият тип изпълнение е булев

Върнатият тип на executeQuery е обект ResultSet

Върнатият тип на executeUpdate е int


22) Индексът на набора от резултати започва с 0 или 1?

Индексът на набора от резултати започва с 1.


23) Каква е ролята на Class.forName при зареждане на драйвери?

Class.forName създава екземпляр на JDBC драйвер и се регистрира в DriverManager.


24) JDBC-ODBC Bridge е многонишков или не?

Не, JDBC-ODBC Bridge използва синхронизирани методи за сериализиране на всички извиквания, направени към ODBC.


25) Кой интерфейс управлява управлението на транзакции в JDBC?

Интерфейсът за свързване управлява управлението на транзакциите в JDBC. Той предоставя метод за commit (), rollback () и т.н.


26) Защо възниква грешка „Няма подходящ драйвер“?

Няма подходящ драйвер“ възниква, когато извикваме метод DriverManager.getConnection,

може да възникне поради следните причини:

  • не може да зареди точните JDBC драйвери, преди да извика метода getConnection.
  • Може да е невалиден или грешен JDBC URL адрес.

27) Подготвените отчети са по-бързи. защо

Изпълнението на подготвен оператор е по-бързо от директното изпълнение, тъй като операторът се компилира само веднъж. Подготвените изрази и JDBC драйверът са свързани помежду си по време на изпълнение и няма допълнителни разходи за връзка.


28) Възможно ли е да се свържете с множество бази данни? Използвайки един оператор, можем ли да актуализираме или извлечем данни от две, три или много бази данни?

Да, възможно е да се свържете с няколко бази данни едновременно, но зависи от конкретния драйвер.

За да актуализираме и извлечем данни от различната база данни, можем да използваме единичния оператор. Но имаме нужда от междинен софтуер, за да работим с множество бази данни или една база данни.


29) Кажете ми разликата между setMaxRows(int) и SetFetchSize(int)?

setMaxRows(int) SetFetchSize(int)?
Определя колко реда може да съдържа набор от резултати наведнъж Определя броя на редовете, които ще бъдат прочетени от базата данни.

30) Разкажете ми за специални знаци?

Специален символ се предхожда от екраниращ знак. Пример –

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

31) Какво е значението на „мръсно четене“ в базата данни?

Мръсно четене означава „прочетете стойността, която може да е правилна или може да не е правилна“.


32) Какво имате предвид под двуфазови ангажименти?

Двуфазният ангажимент се използва в процеса на разпределена транзакция. Ако се изпълнява някаква транзакция и това ще засегне множество бази данни. Ще се използват двуфазови ангажименти, за да се синхронизират всички бази данни една с друга.


33) Колко заключващи системи има в JDBC?

В JDBC са налични два вида заключване, чрез които можем да обработваме повече от един потребител.

Ако двама потребители преглеждат един и същ запис, тогава не се извършва заключване. Ако единият потребител актуализира запис, а вторият потребител също актуализира същия запис, тогава ще използваме заключване.

  1. Оптимистично заключване: ще заключи записа само когато ще „актуализираме“.
  2. Песимистично заключване: ще заключи записа от „избор“ за преглед, актуализиране и време за ангажиране.

34) Какви са изключенията в JDBC?

В JDBC има четири вида изключения.

  1. изключение batchUpdate
  2. Съкращаване на данни
  3. SQL изключение
  4. SQL предупреждение

35) Дайте стъпки за свързване към DB чрез JDBC?

Има два начина за свързване на база данни с помощта на JDBC

  1. Използване на DriverManager:

Той ще зареди класа на драйвера с помощта на class.forName(driver class) и Class.forName().

След зареждане ще прехвърли контрола на DriverManager.

DriverManager.getConnection() ще създаде връзката за достъп до базата данни.

  1. Използване на DataSource:

За DataSource не е необходимо да се използва DriverManager с помощта на JNDI. Той ще търси DataSource от сървъра за именуване. Методът DataSource.getConnection() ще върне обекта Connection към базата данни.


36) Обяснете JDBC архитектурата?

JDBC API поддържа както двуслойни, така и трислойни модели за базата данни.

В двуслоен модел Java приложението взаимодейства с източника на данни

JDBC двуслойна архитектура

В 3-степенния модел командите се пренасочват към „среден слой“ от услуги. След това командите се изпращат до източника на данни.

JDBC двуслойна архитектура


37) Какви са новите функции, налични в JDBC 4.0?

Новите функции са

  • Автоматично зареждане от клас JDBC драйвер
  • Подобрено управление на връзката
  • RowId SQL е активиран
  • Набор от данни, реализиран от SQL чрез използване на анотации
  • Подобрения в обработката на SQL изключения
  • Поддържа SQL XML файлове

38) Какви пакети се използват в JDBC?

8 пакета се използват в JDBC –

  1. sql.Драйвер
  2. Връзка
  3. Изявление
  4. PreparedStatement
  5. CallableStatement
  6. ResultSet
  7. ResultSetMetaData
  8. DatabaseMetaData

39) Колко RowSet са налични в JDBC?

Налични са два вида комплекти редове:

  1. Свързана – Свързан RowSet обект се свързва мигновено към базата данни. Ако приложението се прекрати, свързаният обект RowSet също се прекрати.
  2. изключен – Прекъснат RowSet обект се свързва с базата данни след изпълнение на необходимата заявка.

40) Какво е значението на връзката?

Интерфейсът за връзка се състои от методи за взаимодействие с базата данни.


41) Обяснете JDBC Savepoint?

Точката за запис представлява точка, до която текущата транзакция може да се върне обратно. Вместо да върне обратно всичките си промени, той може да избере да върне само някои от тях.


42) Избройте предимствата от използването на DataSource?

Източникът на данни разделя работата между администратор и програмист/разработчик.

Администраторът създава обект DataSource и го свързва с JNDI регистъра. Програмист/разработчик извлича обекта DataSource от регистъра. След това установява връзка с базата данни.


43) Каква е причината, поради която се нуждаем от JdbcRowSet като обвивката около ResultSet?

Можем да използваме ResultSet обект като JavaBeans компонент.

  • JdbcRowSet също може да се използва като JavaBeans компонент. Ето защо той може да бъде създаден и конфигуриран по време на проектиране или компилиране и изпълнен по време на изпълнение.
  • Всички обекти jdbcRowSet могат да се превъртат и актуализират.

44) По колко начина можем да видим набор от резултати?

Има 2 начина за преглед на ResultSet

  1. колона
  2. индекс на колона.

Пример: getInt(String columnName), getInt(int columnIndex)


45) По колко начина можете да актуализирате набор от резултати?

Следните методи ви помагат да актуализирате набор от резултати

  • updateRow()
  • deleteRow()
  • refreshRow()
  • cancelRowUpdates()
  • вмъкване на ред ()

46) Защо трябва да затваряме връзките към бази данни в Java?

Като най-добра практика трябва да затворим набора от резултати, израза и връзката. Ако връзката идва от пул, при затваряне връзката се изпраща обратно към пула за повторно използване. Правим това в блока finally{}, защото ако възникне някакво изключение, все още имаме възможност да затворим това.


47) Защо използваме blob типове данни в JDBC?

Те се използват за съхраняване на голямо количество данни в базата данни като изображения, филми и др.


48) Как да настроя атрибута Concurrency в ResultSet?

Има две нива на едновременност

  1. CONCUR_READ_ONLY – Той е само за четене.
  2. CONCUR_UPDATABLE − Той е както за четене, така и за актуализиране.

49) Каква е разликата между клиентските и сървърните курсори на бази данни?

Курсорът от страна на сървъра означава, че данните и резултатите се записват на сървъра. Само когато поисканите данни се изпращат на клиента.

Курсорът от страна на клиента означава всички данни, изпратени до местоположението на клиента.


50) Как вмъквате изображения в базата данни с помощта на JDBC?

Изображения в базата данни, използващи типа данни BLOB, където изображението се съхранява като поток от байтове. Кодът по-долу показва как да вмъкнете изображението в 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();

Тези въпроси за интервюто също ще ви помогнат във вашата viva (устна)

Сподели

2 Коментари

  1. въплъщение Джахнави казва:

    много полезно за студентите………..

Оставете коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани *