Раздел: Введение 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: Отсутствием временной зоны Наличием временной зоны Отсутствием поля наносекунд Наличием поля наносекунд