Шифрование и секретность в Linux


Простая выборка в JDBC



Листинг 12.4. Простая выборка в JDBC

Statement s = nul 1: try

{

s = c.createStatementO;

} catch (SQLException se) {

System.out.printlnC'We got an exception while creating a statement:" +

"that probably means we're no longer connected."):

se.printStackTrace();

System, exit(l);

}

ResultSet rs = null:

try {

rs = s.executeQuery("SELECT * FROM books");



} catch (SQLException se)

{

System.out.printlnC'We got an exception while executing our query:" +

"that probably means our SQL is invalid"):

se.pnntStackTrace():

System.exit(l):

}

int index = 0:

try { while (rs.nextO)

{

System.out.printlnC'Here's the result of row " + index++ + ":"):

System.out.pri ntln(rs.getStri ng(1)):

}

} catch (SQLException se) {

System.out.pnntlnC'We got an exception while getting a result:this " +

"shouldn't happen: we've done something really bad.");

se.pnntStackTrace();

System.exit(l):

}

Сначала мы создаем объект Statement, а затем используем метод executeQuery этого объекта для выполнения запроса SELECT * FROM books. Возвращенный запросом объект ResultSet используется для вывода полученной информации.

Объект Resul tSet предоставляет основной интерфейс выборки из базы данных. Он обладает двумя основными возможностями: возможностью последовательного перебора полученных записей и возможностью возвращения значения заданного поля текущей записи. Принцип перебора такой же, как в стандартных перечислениях Java: вы начинаете перебор в позиции перед первым элементом и последовательно переходите к следующему элементу методом next.

Метод next возвращает true в том случае, если объект ResultSet успешно перешел к следующей записи (то есть в итоговом наборе еще остались необработанные записи). Цикл whi I e в листинге 12.4 выводит значение первого поля каждой из возвращаемых записей. Если итоговый набор не содержит ни одной записи, первый же вызов next вернет fal se и программа ничего не выведет.

Класс ResultSet может возвращать значения различных типов; в листинге 12.4 первое поле интерпретируется как строка (Stri ng). К счастью, все стандартные типы данных SQL могут быть представлены в строковом виде, поэтому независимо от типа данных вы всегда сможете получить значение первого поля и вывести его. Класс ResultSet содержит множество других методов, включая методы выборки для всех типов данных SQL и преобразования их к типам Java. За дополнительной информацией обращайтесь к описанию ResultSet в документации API.

Другой важный метод, executeUpdate, тоже вызывается с одним аргументом — выполняемой командой SQL Различие между executeQuery и executeUpdate состоит в том, что метод executeUpdate предназначен для выполнения команд, изменяющих состояние данных в базе. Например, при вызове executeUpdate для команды CREATE, INSERT или UPDATE возвращается число типа int, определяющее количество модифицированных записей.

В листинге 12.5 метод executeUpdate используется для вставки новой записи в таблицу books.



Содержание раздела