Топ-50 запитань і відповідей на інтерв’ю JDBC (2025)
Ось запитання та відповіді на співбесіді щодо підключення до бази даних Java (JDBC) для новачків, а також для досвідчених кандидатів, щоб отримати роботу своєї мрії.
Безкоштовне завантаження у форматі PDF: JDBC Interview Questions
1) Що таке JDBC?
JDBC означає підключення до бази даних Java. JDBC — це Java API, який взаємодіє з базою даних і виконує SQLquery.
2) Що таке драйвер JDBC і скільки доступних драйверів JDBC?
Драйвер JDBC містить класи та інтерфейси, які допомагають програмі Java та базі даних.
Існує 4 типи драйверів JDBC.
- Драйвер типу 1 або драйвер моста JDBC-ODBC.
- Драйвер типу 2 або Native-API, частково Java драйвер.
- Драйвер типу 3 або мережевий протокол, чистий драйвер Java.
- Драйвер типу 4 або Native-protocol, чистий драйвер 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-protocol, чистий драйвер Java, є найшвидшим драйвером.
5) Що таке компоненти JDBC API?
Є чотири типи компонентів
- JDBC API
- Менеджер драйверів JDBC
- Набір тестів JDBC
- Міст JDBC-ODBC
6) Що таке оператори JDBC?
Існує 3 типи операторів JDBC, як наведено нижче:
- ЗаяваВін виконає SQL запит (статичний SQL-запит) до бази даних.
- Підготовлена заява: Використовується, коли нам потрібно виконувати SQL-інструкцію багаторазово. Вхідні дані є динамічними та приймаються під час виконання.
- Заява про виклик: Використовується, коли ми хочемо виконати збережені процедури.
7) Як ми можемо виконувати збережені процедури?
Збережені процедури можна виконувати за допомогою оператора JDBCcallable. Ось код.
Connection conn = null; CallableStatement callStmt = conn.prepareCall("{call myStoreproc(?, ?)}"); callStmt.setString(1, "abcdefg");
8) Які переваги використання PreparedStatement у Java?
Підготовлений оператор використовується для багаторазового виконання тих самих операторів SQL. Підготовлений оператор компілюється лише один раз, навіть якщо в ньому використано «n» кількість разів
9) Що таке ResultSet?
Інтерфейс java.sql.ResultSet означає набір результатів SQL-запиту. Це означає, що курсор вказує на рядок таблиці; він вказує на перед першим рядком.
10) Які існують типи ResultSet?
Доступні три типи ResultSet. Якщо ми не оголошуємо жодного ResultSet, це означає, що ми викликаємо TYPE_FORWARD_ONLY
- TYPE_FORWARD_ONLY: курсор може рухатися тільки вперед.
- TYPE_SCROLL_INSENSITIVE: курсор може рухатися вперед і назад, але нечутливий.
- TYPE_SCROLL_SENSITIVE: курсор може рухатися вперед і назад, але він чутливий
11) Поясніть різницю між RowSet і ResultSet у JDBC?
У підключенні дескриптора ResultSet до БД ми не можемо створити 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) Що таке об’єднання підключень до бази даних? Переваги використання пулу підключень?
Пул з’єднань означає, що з’єднання зберігатимуться в кеші, і ми зможемо використовувати їх у майбутньому.
Перевага:
- Це швидше
- Пул підключень стає легшим для діагностики та аналізу підключення до бази даних.
18) Яку функцію виконує клас DriverManager?
Це інтерфейс між користувачем і драйверами. DriverManager відстежує всі дії між базою даних і відповідним драйвером.
19) Що означає пакетне оновлення?
Пакетне оновлення означає виконання набору/групи SQL-запитів одночасно.
Пакетні оновлення можна використовувати лише для вставки, оновлення та видалення, але не для запиту на вибірку.
20) Скільки пакетів доступно в JDBC API?
В JDBC API доступні два типи пакетів
- java.sql
- javax.sql
21) Який тип повертаються execute, executeQuery та executeUpdate?
Повернутий тип виконання є логічним
Тип повернення executeQuery – об’єкт ResultSet
Тип повернення executeUpdate – int
22) Індекс набору результатів починається з 0 чи 1?
Індекс набору результатів починається з 1.
23) Яка роль Class.forName під час завантаження драйверів?
Class.forName створює екземпляр драйвера JDBC і реєструє його в DriverManager.
24) Міст JDBC-ODBC є багатопоточним чи ні?
Ні, JDBC-ODBC Bridge використовує синхронізовані методи для серіалізації всіх викликів, зроблених до ODBC.
25) Який інтерфейс керує транзакціями в JDBC?
Інтерфейс підключення обробляє керування транзакціями в JDBC. Він надає метод для commit (), rollback () тощо.
26) Чому виникає помилка «Немає відповідного драйвера»?
Немає відповідного драйвера» виникає, коли ми викликаємо метод DriverManager.getConnection,
це може статися з наступних причин:
- неможливо завантажити точні драйвери JDBC перед викликом методу getConnection.
- Це може бути недійсна або неправильна URL-адреса JDBC.
27) Підготовлені заяви працюють швидше. чому
Виконання підготовленого оператора відбувається швидше, ніж пряме виконання, оскільки оператор компілюється лише один раз. Підготовлені оператори та драйвер JDBC пов’язані один з одним під час виконання, і немає накладних витрат на з’єднання.
28) Чи можна підключитися до кількох баз даних? Використовуючи один оператор, чи можемо ми оновити або витягти дані з двох, трьох або багатьох баз даних?
Так, можна підключатися до кількох баз даних одночасно, але це залежить від конкретного драйвера.
Щоб оновити та витягти дані з іншої бази даних, ми можемо використовувати єдиний оператор. Але нам потрібне проміжне програмне забезпечення для роботи з кількома базами даних або однією базою даних.
29) Скажіть мені різницю між setMaxRows(int) і SetFetchSize(int)?
setMaxRows(int) | SetFetchSize(int)? |
---|---|
Визначає, скільки рядків може містити набір результатів одночасно | Визначає кількість рядків, які будуть зчитані з бази даних. |
30) Розкажіть мені про спеціальні символи?
Спеціальному символу передує escape-символ. приклад –
SELECT NAME FROM TABLE WHERE NAME LIKE '\_%' {escape '\'}
31) Що означає «брудне читання» в базі даних?
Брудне читання означає «прочитати значення, яке може бути правильним або невірним».
32) Що ви маєте на увазі під двофазним комітом?
Двофазова фіксація використовується в процесі розподіленої транзакції. Якщо виконується будь-яка транзакція, яка вплине на кілька баз даних. Двофазові коміти будуть використані для синхронізації всіх баз даних одна з одною.
33) Скільки систем блокування є в JDBC?
У JDBC доступні два типи блокування, за допомогою яких ми можемо працювати з більш ніж одним користувачем.
Якщо два користувачі переглядають один і той самий запис, блокування не виконується. Якщо один користувач оновлює запис, а другий користувач також оновлює той самий запис, тоді ми будемо використовувати блокування.
- Оптимістичне блокування: він заблокує запис лише тоді, коли ми збираємося «оновити».
- Песимістичний блокування: це заблокує запис від «вибору» для перегляду, оновлення та часу фіксації.
34) Які є винятки в JDBC?
У JDBC є чотири типи винятків.
- Виняток batchUpdate
- Скорочення даних
- Виняток SQL
- Попередження SQL
35) Наведіть кроки для підключення до БД за допомогою JDBC?
Існує два способи підключення бази даних за допомогою JDBC
- Використання DriverManager:
Він завантажить клас драйвера за допомогою class.forName(клас драйвера) і Class.forName().
Після завантаження він передасть керування DriverManager.
DriverManager.getConnection() створить з’єднання для доступу до бази даних.
- Використання DataSource:
Для DataSource не потрібно використовувати DriverManager за допомогою JNDI. Він шукатиме DataSource на сервері служби іменування. Метод DataSource.getConnection() поверне об'єкт Connection до бази даних.
36) Поясніть архітектуру JDBC?
JDBC API підтримує як 2-рівневу, так і 3-рівневу моделі для бази даних.
У 2-рівневій моделі програма Java взаємодіє з джерелом даних
У 3-рівневій моделі команди перенаправляються на «середній рівень» служб. Після цього команди відправляються до джерела даних.
37) Які нові функції доступні в JDBC 4.0?
Нові функції є
- Автоматичне завантаження класом драйвера JDBC
- Розширене керування підключенням
- RowId SQL увімкнено
- Набір даних, реалізований SQL за допомогою анотацій
- Покращення обробки винятків SQL
- Підтримка SQL XML файли
38) Які пакети використовуються в JDBC?
У JDBC використовується 8 пакетів –
- sql.Driver
- Connection
- Заява
- Підпорядкованийдержавний
- CallableStatement
- ResultSet
- ResultSetMetaData
- DatabaseMetaData
39) Скільки RowSet доступно в JDBC?
Доступні два типи наборів рядків:
- Підключений – Підключений об’єкт RowSet підключається до бази даних миттєво. Якщо додаток завершує роботу, підключений об’єкт RowSet також завершується.
- Відключено – Відключений об’єкт RowSet підключається до бази даних після виконання необхідного запиту.
40) Що означає зв'язок?
Інтерфейс підключення складається з методів взаємодії з базою даних.
41) Поясніть точку збереження JDBC?
Точка збереження представляє точку, до якої можна відкотити поточну транзакцію. Замість того, щоб відкочувати всі зміни, він може вибрати відкат лише деяких із них.
42) Перелічіть переваги використання DataSource?
Джерело даних розподіляє роботу між адміністратором і програмістом/розробником.
Адміністратор створює об'єкт DataSource та пов'язує його з реєстром JNDI. Програміст/розробник отримує об'єкт DataSource з реєстру. Потім він встановлює з'єднання з базою даних.
43) Яка причина, чому нам потрібен JdbcRowSet, як обгортка навколо ResultSet?
Ми можемо використовувати об’єкт ResultSet як компонент JavaBeans.
- JdbcRowSet також можна використовувати як компонент JavaBeans. Ось чому його можна створити та налаштувати під час проектування або компіляції та виконати під час виконання.
- Усі об’єкти jdbcRowSet можна прокручувати та оновлювати.
44) Скількома способами ми можемо переглянути набір результатів?
Існує 2 способи перегляду ResultSet
- колонка
- індекс стовпця.
Приклад: getInt(String columnName), getInt(int columnIndex)
45) Скількома способами можна оновити набір результатів?
Наступні методи допоможуть вам оновити набір результатів
- updateRow()
- deleteRow()
- refreshRow()
- cancelRowUpdates()
- insertRow()
46) Чому ми повинні закривати підключення до бази даних у Java?
Як найкраща практика, ми повинні закрити набір результатів, оператор і з’єднання. Якщо підключення надходить із пулу, після закриття з’єднання повертається до пулу для повторного використання. Ми робимо це в блоці finally{}, тому що якщо трапиться будь-який виняток, ми все одно матимемо шанс закрити це.
47) Чому ми використовуємо типи даних blob у JDBC?
Вони використовуються для зберігання великої кількості даних у базі даних, таких як зображення, фільми тощо.
48) Як встановити атрибут Concurrency в ResultSet?
Існує два рівні паралельності
- CONCUR_READ_ONLY – призначено лише для читання.
- CONCUR_UPDATABLE − призначений як для читання, так і для оновлення.
49) Яка різниця між курсорами бази даних клієнта та сервера?
Курсор на стороні сервера означає, що дані та результати зберігаються на сервері. Лише тоді, коли запитувані дані надсилаються клієнту.
Курсор на стороні клієнта означає всі дані, надіслані до розташування клієнта.
50) Як вставити зображення в базу даних за допомогою JDBC?
Зображення в базі даних із використанням типу даних BLOB, де зображення зберігається як потік байтів. Код нижче показує, як вставити зображення в БД.
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();
Ці запитання для співбесіди також допоможуть вам у життєдіяльності (усному)
дуже корисно для студентів………..
кращий