50 лучших вопросов и ответов на собеседовании JDBC (2025 г.)

Вот вопросы и ответы на собеседовании по Java Database Connectivity (JDBC) для новичков и опытных кандидатов, желающих получить работу своей мечты.

Бесплатная загрузка PDF-файла: Вопросы для интервью JDBC


1) Что такое JDBC?

JDBC означает подключение к базе данных Java. JDBC — это Java API, который взаимодействует с базой данных и выполняет SQL-запрос.


2) Что такое драйвер JDBC и сколько драйверов JDBC доступно?

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

Существует 4 типа драйверов JDBC.

  1. Драйвер типа 1 или драйвер моста JDBC-ODBC.
  2. Драйвер типа 2 или роднойAPI, частично Java-драйвер.
  3. Драйвер типа 3 или сетевой протокол, чистый драйвер Java.
  4. Драйвер типа 4 или чистый драйвер 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) Каковы компоненты API JDBC?

Существует четыре типа компонентов.

  1. JDBC-API
  2. Диспетчер драйверов JDBC
  3. Набор тестов JDBC
  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) Каковы преимущества использования ReadedStatement в Java?

Подготовленный оператор используется для многократного выполнения одних и тех же операторов SQL. Подготовленный оператор компилируется только один раз, хотя он использовал «n» раз.


9) Что такое набор результатов?

Интерфейс 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 к БД мы не можем сделать Result как сериализованный объект.

Из-за указанной выше проблемы мы не можем передать Resultset по сети.

RowSet расширяет интерфейс ResultSet, поэтому он содержит все методы из ResultSet. RowSet сериализуется.

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


12) Зачем вам использовать setAutoCommit(false) в JDBC?

Если вы хотите отключить автоматическую фиксацию, установите Connection.setAutoCommit(false)


13) Что такое предупреждения базы данных в JDBC и как мы можем обрабатывать предупреждения базы данных в JDBC?

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


14) Могу ли я получить нулевой набор результатов?

Нет, мы не можем получить нулевой набор результатов. 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 многопоточный или нет?

Нет, мост JDBC-ODBC использует синхронизированные методы для сериализации всех вызовов, сделанных к ODBC.


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

Интерфейс подключения отвечает за управление транзакциями в JDBC. Он предоставляет методы фиксации(), отката() и т. д.


26) Почему возникает ошибка «Нет подходящего драйвера»?

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

это может произойти по следующим причинам:

  • невозможно загрузить точные драйверы JDBC перед вызовом метода getConnection.
  • Возможно, это недействительный или неправильный URL-адрес JDBC.

27) Подготовленные заявления выполняются быстрее. Почему?

Выполнение подготовленного оператора происходит быстрее, чем прямое выполнение, поскольку оператор компилируется только один раз. Подготовленные операторы и драйвер JDBC соединяются друг с другом во время выполнения, и накладные расходы на соединение отсутствуют.


28) Можно ли подключиться к нескольким базам данных? Можем ли мы обновить или извлечь данные из двух, трех или многих баз данных, используя один оператор?

Да, возможно одновременное подключение к нескольким базам данных, но это зависит от конкретного драйвера.

Чтобы обновить и извлечь данные из другой базы данных, мы можем использовать один оператор. Но нам нужно промежуточное программное обеспечение для работы с несколькими базами данных или с одной базой данных.


29) Скажите мне разницу между setMaxRows(int) и SetFetchSize(int)?

setMaxRows (целое) SetFetchSize (целое)?
Определяет, сколько строк результирующий набор может содержать одновременно Определяет количество строк, которые будут считаны из базы данных.

30) Расскажите мне о специальных символах?

Специальному символу предшествует escape-символ. Пример -

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

31) Что означает «грязное чтение» в базе данных?

Грязное чтение означает «прочитать значение, которое может быть правильным, а может и нет».


32) Что вы подразумеваете под двухфазными коммитами?

Двухфазная фиксация используется в процессе распределенных транзакций. Если какая-либо транзакция выполняется и она повлияет на несколько баз данных. Для синхронизации всех баз данных друг с другом будут использоваться двухфазные фиксации.


33) Сколько систем блокировки в JDBC?

В JDBC доступны два типа блокировки, с помощью которых мы можем обрабатывать более одного пользователя.

Если два пользователя просматривают одну и ту же запись, блокировка не применяется. Если один пользователь обновляет запись, а второй тоже обновляет ту же запись, то в этом случае мы будем использовать блокировку.

  1. Оптимистическая блокировка: он заблокирует запись только тогда, когда мы собираемся «обновить».
  2. Пессимистическая блокировка: запись будет заблокирована для просмотра, обновления и фиксации времени.

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

В JDBC существует четыре типа исключений.

  1. Исключение пакетного обновления
  2. Усечение данных
  3. SQL-исключение
  4. Предупреждение SQL

35) Дайте инструкции по подключению к БД с помощью JDBC?

Существует два способа подключения базы данных с помощью JDBC.

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

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

После загрузки он передаст управление DriverManager.

DriverManager.getConnection() создаст соединение для доступа к базе данных.

  1. Использование источника данных:

Для DataSource нет необходимости использовать DriverManager с помощью JNDI. Он будет искать DataSource на сервере службы именования. Метод DataSource.getConnection() вернет объект Connection в базу данных.


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

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

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

Двухуровневая архитектура JDBC

В трехуровневой модели команды перенаправляются на «средний уровень» сервисов. После этого команды отправляются в источник данных.

Двухуровневая архитектура JDBC


37) Какие новые функции доступны в JDBC 4.0?

Новые функции

  • Автоматическая загрузка по классу драйвера JDBC
  • Расширенное управление соединениями
  • RowId SQL включен
  • Набор данных, реализованный SQL с использованием аннотаций.
  • Улучшения обработки исключений SQL
  • Поддержка SQL XML файлов

38) Какие пакеты используются в JDBC?

В JDBC используется 8 пакетов –

  1. sql.Driver
  2. Связь
  3. заявление
  4. Подготовленное заявление
  5. CallableStatement
  6. Набор результатов
  7. Результатсетметадата
  8. База данныхМетаДанные

39) Сколько RowSet доступно в JDBC?

Доступны два типа наборов строк:

  1. : – Подключенный объект RowSet мгновенно подключается к базе данных. Если приложение завершает работу, подключенный объект RowSet также завершается.
  2. Отключенные – Отключенный объект RowSet подключается к базе данных после выполнения необходимого запроса.

40) В чем смысл связи?

Интерфейс подключения состоит из методов взаимодействия с базой данных.


41) Объясните точку сохранения JDBC?

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


42) Перечислите преимущества использования DataSource?

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

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


43) По какой причине нам нужен JdbcRowSet, подобный оболочке ResultSet?

Мы можем использовать объект ResultSet в качестве компонента JavaBeans.

  • JdbcRowSet также можно использовать как компонент JavaBeans. Вот почему его можно создать и настроить во время проектирования или компиляции и выполнить во время выполнения.
  • Все объекты jdbcRowSet можно прокручивать и обновлять.

44) Сколькими способами мы можем просмотреть набор результатов?

Существует 2 способа просмотра ResultSet.

  1. обзор
  2. индекс столбца.

Пример: getInt(String columnsName), getInt(int columnsIndex)


45) Сколькими способами вы можете обновить набор результатов?

Следующие методы помогут вам обновить набор результатов.

  • обновитьстроку()
  • deleteRow ()
  • обновитьСтрока()
  • отменитьRowUpdates()
  • insertRow ()

46) Почему нам следует закрывать соединения с базой данных в Java?

Рекомендуется закрыть набор результатов, оператор и соединение. Если соединение исходит из пула, при закрытии соединение отправляется обратно в пул для повторного использования. Мы делаем это в блокеfinally{}, потому что если возникнет какое-либо исключение, у нас все равно будет возможность закрыть его.


47) Почему мы используем типы данных blob в JDBC?

Они используются для хранения большого объема данных в базе данных, таких как изображения, фильмы и т. д.


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

Есть два уровня параллелизма

  1. CONCUR_READ_ONLY – предназначен только для чтения.
  2. 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();

Эти вопросы для собеседования также помогут вам в устной речи.

Поделиться

2 комментариев

  1. Аватара Jahnavi говорит:

    очень полезно для студентов………..

Оставьте комментарий

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *