Вход/Регистрация
MySQL 5.0. Библиотека программиста
вернуться

Гольцман Виктор

Шрифт:

После подключения к серверу MySQL можно переходить к работе с данными. В следующем подразделе мы рассмотрим выполнение простых SQL-команд.

Выполнение простых SQL-команд. Обработка результатов запроса

Для выполнения SQL-команд, не имеющих подстановочных параметров, предназначен класс Statement. Объект класса Statement создается с помощью метода

Statement createStatement throws SQLException

класса Connection. Например, вызов метода

Statement query = dbh.createStatement;

создает объект query, соответствующий SQL-команде. Если SQL-команда не предполагает получение данных из базы (такими командами являются, например, команды INSERT, UPDATE, DELETE), то для ее выполнения используется метод

int executeUpdate(«<Текст команды>») throws SQLException

класса Statement. Метод executeUpdate возвращает количество строк, с которыми была выполнена операция. Для выполнения SQL-запроса используется метод

ResultSet executeQuery(«<Текст запроса>») throws SQLException

класса Statement. Метод executeQuery возвращает объект класса ResultSet, содержащий набор полученных запросом данных. Важным элементом результирующего набора является курсор – указатель на текущую строку.

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

• boolean next throws SQLException

Переводит курсор на следующую строку. При первом вызове устанавливает курсор на первую строку. Если строки результирующего набора исчерпаны, возвращает значение FALSE.

• Методы вида get^rn данных>(<Имя или номер столбца>) возвращают значение, находящееся в текущей строке в указанном столбце. В зависимости от типа данных столбца вы можете использовать следующие функции:

• для числовых столбцов:

boolean getBoolean(<Имя или номер столбца>)

throws SQLException

int getInt(<Имя или номер столбца>)

throws SQLException

long getLong(<Имя или номер столбца>)

throws SQLException

float getFloat(<Имя или номер столбца>)

throws SQLException

double getDouble(<Имя или номер столбца>)

throws SQLException

BigDecimal getBigDecimal(<Имя или номер столбца>)

throws SQLException

• для столбцов с типом даты и/или времени:

Date getDate(<Имя или номер столбца>)

throws SQLException

Timestamp getTimestamp(<Имя или номер столбца>)

throws SQLException

Time getTime(<Имя или номер столбца>)

throws SQLException

• для символьных типов данных:

String getString(<Имя или номер столбца>)

throws SQLException

byte[] getBytes(<Имя или номер столбца>)

throws SQLException

Рассмотрим сервлет, который выполняет простой запрос для получения данных из таблицы Products (Товары) и выводит сведения о товарах на веб-странице (листинг 4.18). Листинг 4.18. Получение информации и отображение ее на странице

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.sql.*;

public class Output extends HttpServlet {

public void service(HttpServletRequest request,

HttpServletResponse response) throws IOException, ServletException {

response.setContentType(«text/html;charset=windows-1251»);

PrintWriter out = response.getWriter;

//Создаем строку для вывода результата запроса

String pagecontent = «»;

try {

//Подсоединяемся к базе данных

Connection dbh =

DriverManager.getConnection(«jdbc:mysql://localhost/SalesDept»

+»?user=username&password=userpassword&characterEncoding=cp1251»);

//Создаем объект для SQL-команд

Statement query = dbh.createStatement;

//Выполняем запрос к базе данных

ResultSet qresult = query.executeQuery(«SELECT * FROM Products»);

//Для каждой строки в результирующем наборе выводим значения столбцов

//description (наименование), details (описание) и price (цена)

while (qresult.next) {

pagecontent +=

«<tr><td>» + qresult.getString(«description») + «</td>» +

«<td>» + qresult.getString(«details») + «</td>» +

«<td>» + qresult.getBigDecimal(«price») + «</td></tr>\n»;

}

//Обрабатываем исключение

} catch (SQLException ex) {

out.println(“Ошибка доступа к базе данных. Приносим свои извинения”);

return;

}

//Выводим полученные данные

out.println(«<html>»);

out.println(«<head>»);

out.println(«<title>Работа с MySQL</title>»);

out.println(«</head>»);

out.println(«<body>»);

out.println(“<!– Выводим заголовок списка товаров –>”);

out.println(“<h1>Список товаров</h1>”);

out.println(«<table>»);

out.println(«<tr>»);

out.println(«<th>Наименование</th>»);

out.println(«<th>Описание</th>»);

out.println(«<th>Цена</th>»);

out.println(«</tr>»);

out.println(pagecontent);

out.println(«</table>»);

out.println(«</body>»);

out.println(“</html>”);

}

}

В этом примере вначале выполняется подключение к базе данных, далее создается объект query класса Statement, затем метод executeQuery этого объекта выполняет запрос к базе данных. Результат запроса записывается в объект qresult класса ResultSet. Затем последовательно рассматриваются строки объекта qresult и выводятся значения столбцов description, details и price.

В результате запуска сервлета Output вы увидите на веб-странице список товаров (рис. 4.36).

Рис. 4.36. Вывод информации на странице

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

while (qresult.next) {

pagecontent +=

«<tr><td>» + qresult.getString(2) + «</td>» +

«<td>» + qresult.getString(3) + «</td>» +

«<td>» + qresult.getBigDecimal(4) + «</td></tr>\n»;

}

  • Читать дальше
  • 1
  • ...
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: