Для выполнения оператора SQL нужно создать объект Statement. Для этой цели используется объект Connection, который можно получить, вызвав метод DriverManager.getConnection():
1 |
Statement stat = conn.createStatement(); |
Затем потребуется создать строку с требуемой SQL-командой:
1 2 3 |
String command = "UPDATE Books" + " SET Price = Price - 5.00" + " WHERE Title NOT LIKE ;%Introduction%'"; |
Далее необходимо вызвать метод executeUpdate() класса Statement:
1 |
stat.executeUpdate(command); |
Метод executeUpdate возвращает количество строк, полученных в результате выполнения SQL-команды, или ноль для команд, которые не возвращают количества строк. Так, в приведенном выше примере будет возвращено количество книг, цена которых снижена на 5 долларов.
Метод executeUpdate() может применяться для выполнения команд INSERT, UPDATE и DELETE, а также команд определения данных, в частности, CREATE TABLE и DROP TABLE. Но для выполнения оператора SELECT необходимо использовать другой метод, а именно — executeQuery(). Существует также универсальный метод execute(), который может применяться для выполнения произвольных операторов SQL, но он используется в основном для интерактивного создания запросов.
Если вы составляете запрос, вас, конечно же, интересуют результаты. Метод executeQuery() возвращает объект ResultSet, который можно использовать для построчного просмотра результатов:
1 |
ResultSet rs = stat.executeQuery("SELECT * FROM Books"); |
Для анализа результирующего набора применяется приведенный ниже цикл:
1 2 3 4 |
while(rs.next()) { обработка строки } |
Способ последовательной обработки строк в классе ResultSet организован несколько иначе, чем в интерфейсе java.util.Iterator. В классе ResultSet итератор располагается в начале работы перед первой строкой. Поэтому для перемещения его к первой строке нужно использовать метод next(). Кроме этого, в нем нет метода hasNext. Вам придется продолжать вызывать next до тех пор, пока не будет возвращено значение false.
Строки в результирующем наборе располагаются совершено произвольно. Если порядок следования важен, его необходимо установить с помощью конструкции ORDER BY.
При обработке отдельной строки нужно с помощью специальных методов поучить содержимое каждого столбца:
1 2 |
String isbn = rs.getString(1); float price = rs.getDouble("Price"); |
Для каждого типа данных языка Java предусмотрен отдельный метод извлечения информации, например, getString() и getDouble(). Для каждого из них реализованы два варианта, один из них предполагает числовой, а второй — строковый параметр. При использовании числового параметра метод извлечет данные из столбца с указанным номером. Например, метод rs,getString(1) возвратит значение из первого столбца текущей строки.
В отличие от массивов, нумерация столбцов базы данных начинается с 1.
При использовании строкового параметра метод извлечет данные из столбца с указанным именем. Например, rs.getDouble(«Price») возвратит значение из столбца с именем Price.
Первый способ на основе числового параметра более эффективен, но строковые параметры улучшают восприятие и упрощают сопровождение кода.
Если указанный тип не соответствует фактическому типу, метод извлечения данных выполняет преобразование. Например, rs.getString(«Price») преобразует число с плавающей точкой из столбца Price в строку.
Не знаете где скачать новый Adobe Flash Player? Советуем вам скачать Adobe Flash Player на сайте alpinefile.ru.