Приложение. Контрольные вопросы
Раздел: Введение
JDBC - это:
x Прикладной программный интерфейс Java для выполнения SQL-запросов к БД
Стандартная спецификация СУБД для доступа к ней из Java
Унифицированный протокол обмена данными между Java-приложением и СУБД
Набор библиотек доступа к различным СУБД
JDBC умеет производить следующие действия (выбрать все нужное):
x Устанавливать соединение с БД
x Отсылать SQL-запросы в БД
x Обрабатывать результаты SQL-запросов
Интерпретировать выражения на языке SQL
Компилировать выражения на языке SQL
Манипулировать данными в среде с многопользовательским доступом к ним
Дублировать поведение СУБД с целью большей производительности системы вцелом
Принимать сетевые подключения
Выберите фразы, характеризующие двухзвенную модель JDBC:
JDBC-драйвер "понимает" сетевой протокол СУБД
JDBC-драйвер не "понимает" сетевого протокола СУБД, а использует свой собственный
JDBC-драйвер двухзвенной структуры работает быстрее, чем в случае трехзвенной структуры
JDBC-драйвер двухзвенной структуры работает медленнее, чем в случае трехзвенной структуры
JDBC-драйверу может быть безразлично, с какой именно СУБД он имеет дело
JDBC-драйвер работает только с данной СУБД или группой схожих СУБД
Обозначение JDBC COMPLIANTTM означает, что (отметить все подходящие):
В реализации JDBC-драйвера достигнута определенная часть методов спецификации JDBC
Реализованы все методы спецификации JDBC
Реализовано не менее 80% методов из спецификации JDBC
Реализовано не менее 80% методов из спецификации JDBC и некоторое количество методов, не относящихся к спецификации JDBC
Релизован вводный уровень ANSI SQL 2
Полностью релизован ISO SQL-1
Реализован стандартный уровень DDL и определенная часть SQL-2
К разделу "Соединение":
Выберите верные предложения:
Приложение может соединяться только с одной СУБД (Система Управления Базами Данных, DBMS)
Приложение может соединяться с несколькими одинаковыми СУБД
Приложение может соединяться только с одной БД
Приложение может соединяться с несколькими БД в рамках одной СУБД
Приложение может открыть только по одному соединению с каждой СУБД
Приложение может открыть только по одному соединению с каждой БД
Х Приложение может открывать сколько угодно соединений с различными БД одновременно
Метод DriverManager.getConnection:
Открывает новое соединение с БД
Открывает новое соединение с СУБД
Выбирает и возвращает уже открытое соединение из системного списка соединений
Закрывает соединение с БД
Возвращает соединение приложения с JDBC-драйвером
Подимя (subname) JDBC-URL это:
Все, что находится между второй и третьей ":" (jdbc:имя:подимя:...)
Все, что находится между первой и второй "." (имя.подимя....)
Все, что находится после второй ":" (jdbc:подпротокол:подимя)
Все, что находится после второй "." (драйвер.имя.подимя)
Транзакция - это
Последовательность операций, которые либо все выполняются, либо все откатываются
Два или более SQL-запроса, выполнение которых происходит параллельно
Совокупность таблиц, обменивающихся между собой данными по специальному протоколу
Сессия соединения, открытая пользователем
Журнал всех изменений в БД
В JDBC-URL указывается:
Текст запроса на языке SQL
Текст запроса на языке SQL и входные параметры запроса, формат выходных данных
Местоположение СУБД в сети, включая IP-адрес имя подпротокола, а также имя пользователя и (возможно) пароль
Местоположение БД в сети, включая имя подпротокола и подимя, включающее в себя необязательные параметры
Адрес официального сайта JDBC фирмы JavaSoft
К разделу "Класс DriverManager":
Выберите методы, относящиеся к классу DriverManager:
x getConnection
x getDrivers
x getDriver
x registerDriver
getDriverForName
createStatement
prepareStatement
executeStatement
executeSQL
connect
Загрузка JDBC-драйвера осуществляется так:
x Class.forName("имя_класса_драйвера")
x В системном свойстве jdbc.drivers перечислены все классы драйверов
В системном свойстве jdbc.drivers перечислены все подпротоколы JDBC-URL
DriverManager.registerDriver(new Имя_драйвера())
Имя_драйвера.register()
К разделу "Запрос (Statement)":
Метод prepareStatement:
Подготавливает запрос, ранее созданный с помощью createStatement(...)
Подготавливает запрос, ранее созданный с помощью new Statement(...)
Создает новый подготовленный запрос
Подготавливает драйвер к выполнению нового запроса
Устанавливает параметры созданного ранее с помощью new PreparedStatement(...) подготовленного запроса
Методы создания нового объекта класса Statement (con - объект типа Connection, drv - типа Driver):
x con.createStatement()
con.createStatement("запрос")
con.prepareStatement()
x con.prepareCall("SQL")
con.prepareCall("SQL", параметры)
x con.prepareStatement("запрос")
con.executeQuery("запрос")
con.execute("запрос")
Метод executeUpdate возвращает:
Число обработанных строк
x Число обработанных строк или 0, если выполнялся оператор DDL
Число обработанных строк или -1, если выполнялся оператор DDL
void
ResultSet, содержащий все обработанные строки и null, если выполнялся оператор DDL
ResultSet, содержащий все обработанные строки или имена объектов БД, если выполнялся оператор DDL
"ResultSet (набор данных)":
Для большей переносимости (отметить несколько вариантов) рекомендуется:
X Выходные (OUT) параметры считывать до считывания результатов
Выходные (OUT) параметры считывать после считывания результатов
X Считывать значения колонок подряд слева направо
Считывать значения колонок слева направо, можно пропускать некоторые параметры
Считывать значения колонок только используя имена колонок
Считывать значения колонок только используя номера колонок
X Использовать методы setXXX, точно соответствующие JDBC-типам данных соответствующих колонок
Использовать методы setXXX с более приоритетным типом данных, чем JDBC-тип соответствующих колонок
Использовать getBytes для BLOB
Использовать getData для BLOB
X Использовать getInputStream для BLOB
Таблица ABC содержит следующие строки:
ID NAME
--------------------
1 Apple
2 Macintosh
3 Microsoft
4 Javasoft
Что выводится на консоль в этом фрагменте кода:
Connection con = DriverManager.getConnection(...);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select count(*) from ABC where NAME like '%soft'");
for(int n=0; n<2; n++){
try{
System.out.print(String.valueOf(rs.getInt(n)));
}catch(Exception ex){
System.out.print("Ошибка");
}
}
x ОшибкаОшибка
2Ошибка
0Ошибка
Ошибка2
Ошибка0
20
02
Как определить, является ли значение в колонке NULL:
x wasNull() после вызова соответствующего метода getXXX
wasNull(номер_колонки)
wasNull(имя_колонки)
isNull() после вызова соответствующего метода getXXX
isNull(номер_колонки)
isNull(имя_колонки)
"PreparedStatement":
Выберите фразы, характеризующие подготовленные запросы:
x Экземпляры PreparedStatement "помнят" скомпилированные SQL-выражения
Экземпляры PreparedStatement "помнят" SQL-выражения в исходном виде
x Компиляция запросов обычно происходит на сервере БД
Компиляция запросов обычно происходит на месте клиента
х В методах execute, executeQuery и executeUpdate добавлено по одному аргументу
х Методы execute, executeQuery и executeUpdate в той форме, в которой они унаследованы от Statement, использовать нельзя
Нельзя использовать метод close(), унаследованный от Statement
Объект java.sql.Timestamp отличается от java.util.Date:
Отсутствием временной зоны
Наличием временной зоны
Отсутствием поля наносекунд
Наличием поля наносекунд