БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
кафедра информационных технологий и автоматизированных систем
РЕФЕРАТ
на тему:
«Работа с базами данных в JAVA на основе соединения JDBC»
Минск, 2008
Как мы знаем, SQL-запросы предварительно компилируются по месту исполнения. Следовательно, чтобы ускорить их выполнение следует компиляцию запросов выполнять предварительно. Это реализуется командой prepareStatement класса PreparedStatement. Данная команда позволяется использовать SQL-запросы с параметрами. Параметры вставляются в запросы как знак вопроса. Сначала рассмотрим, как использовать инструкцию prepareStatement на следующем примере:
try{
Connection db=DriverManager.getConnection(url);
String sq_str="SELECT * FROM stud"; //Строка запроса на выборку
PreparedStatement prst= db.prepareStatement(sq_str);
ResultSet rs= prst.executeQuery(); //Переменная rs получает набор выбранных записей
while(rs.next()){ //Выполняем просмотр записей набора
String s=rs.getString("name")+ " "+ rs.getInt("groupp");
//Получаем содержимое полей name и
// groupp текущей записи
System.out.println("my-"+s);}//выводим запись на экран
System.out.println("OK");
// db.close(); //Закрываем БД.
}
catch(Exception er)
{System.out.println("Error has arised here:"+er);}
}
Инструкция на выборку создается в строке
PreparedStatement prst= db.prepareStatement(sq_str);
Скомпилированный заапрос выполняется обычным образом:
ResultSet rs= prst.executeQuery()
Теперь предположим, что мы хотим выполнить выборку студентов, чей возраст превосходит 19 лет. В этой связи нам надлежит ввести в запрос параметр. Делается это таким образом:
try{
Connection db=DriverManager.getConnection(url);
String sq_str="SELECT * FROM stud where age> ?"; //Строка запроса на //выборку с параметром
PreparedStatement prst= db.prepareStatement(sq_str);
prst.setInt(1,23); //установка значения параметра
ResultSet rs= prst.executeQuery(); //Переменная rs получает набор выбранных записей
while(rs.next()){ //Выполняем просмотр записей набора
String s=rs.getString("name")+ " "+ rs.getInt("groupp");
//Получаем содержимое полей name и
// groupp текущей записи
System.out.println("my-"+s);}//выводим запись на экран
System.out.println("OK");
// db.close(); //Закрываем БД.
}
catch(Exception er)
{System.out.println("Error has arised here:"+er);}
}
}
Сначала создается запрос на выборку:
String sq_str="SELECT * FROM stud where age> ?"; //Строка запроса на //выборку с параметром
В этом запросе место параметра отмечено знаком вопроса. Установка значения параметра реализуется следующим образом:
prst.setInt(1,23);
Параметрами метода setInt являются: номер вставляемого параметра (в нашем примере – 1) и значение вставляемого параметра (23) для поля age. Текстовые значения вставляются с помощью метода setString.
Обратимся к вызову хранимых процедур.
В отличие от запросов с параметрами здесь используют класс CallableStatement. Таким образом, запрос на вызов хранимой процедуры может иметь такой вид:
CallableStatement cs = db.prepareStatement(“call proc1(?,?)”);
cs.setSting(1,”hello”);
cs.setInt(2,10);
В создаваемом запросе указывается имя вызываемой процедуры proc1 и обозначаются позиции для параметров знаком ?. Установка значений параметров производится уже знакомым нам образом. ............