Использование хранимых процедур в Java

Хранимые процедуры это по сути функции, только вместо java кода sql код и эти функции хранятся в БД.

Для создания этой процедуры в БД, нужно выполнить sql запрос CREATE PROCEDURE…

Давайте создадим две процедуры. Одна будет возвращать параметр, в другую будем передавать параметр.

#В скобках ниже не входной параметр процедуры, #а выходной. OUT обозначает что этот параметр #countofbooks будет возвращаться из процедуры. CREATE PROCEDURE NumberOfBooks (OUT countofbooks INT) BEGIN #Копируем количество строк #в выходной параметр countofbooks. SELECT COUNT(*) INTO countofbooks FROM books; END; #Также важным примером будет создание #процедуры, в которую передается параметр. #Создадим вторую процедуру. CREATE PROCEDURE getBooks (bookId INT) BEGIN select * from books where id = bookId; END;

Через MySql консоль создадим их в нашей БД:


Работа с хранимыми процедурами с помощью JDBC

Для использования процедур важно рассмотреть CallableStatement и sql escape последовательности.

Если PreparedStatement предоставлял методы для управления входящими параметрами то CallableStatement для исходящих.

CallableStatement используется для вызова хранимых процедур и манипуляции выходными параметрами процедуры.

Sql escape последовательности являют собой часть sql запроса, которая выполняет какие-то действия. Например, вызов процедуры с помощью {call bookCount(?)}.

Пример программы:

import java.sql.*; public class Procedures { public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName(“com.mysql.cj.jdbc.Driver”); Connection connection = DriverManager.getConnection( “jdbc:mysql://localhost/storage”, “root”, “07998MSD”); //используем первую процедуру. //В ней можно увидеть escape последовательность. //Здесь call для вызова указанной процедуры. CallableStatement cstatement = connection.prepareCall(“{call NumberOfBooks(?)}”); //Теперь сообщаем JDBC драйверу //какой параметр будет на выходе //процедуры. В нашем случае INTEGER. cstatement.registerOutParameter(1, Types.INTEGER); //выполнить процедуру cstatement.execute(); //Выведем на консоль значение первого //параметра процедуры. System.out.println(cstatement.getInt(1)); //используем вторую процедуру. CallableStatement cstatement2 = connection.prepareCall(“{call getBooks(?)}”); //Можем передать параметр в процедуру. //Передаем единицу на место первого вопросика cstatement2.setInt(1, 1); //выполнить процедуру cstatement2.execute(); //получить результат процедуры ResultSet presultSet = cstatement2.getResultSet(); while (presultSet.next()) { int id = presultSet.getInt(“id”); String name = presultSet.getString(“name”); String author = presultSet.getString(“author”); System.out.println(“\n=================\n”); System.out.println(“id: ” + id); System.out.println(“name: ” + name); System.out.println(“author: ” + author); } System.out.println(“Closing connection and ” +”releasing resources…”); presultSet.close(); cstatement.close(); cstatement2.close(); connection.close(); } }

Вывод:

Видим, что первая процедура выполнилась успешно – 5 записей в таблице с книгами. Вторая процедура тоже успешно вывела книгу с id = 1.

Что такое HTML и зачем он нужен

HTML — язык разметки для создания структуры веб-страниц. Узнайте о базовых тегах (html, head, body, p) и их роли в верстке. Примеры простой разметки.
Time to read: 10

Ключевые теги HTML

Основные HTML-теги: DOCTYPE, заголовки (h1-h6), таблицы, изображения и формы. Практические примеры верстки с тегами table, img, form и атрибутами.
Time to read: 9

Атрибуты в HTML

Изучите HTML-атрибуты: width, height, align и другие. Узнайте, как настраивать элементы страницы, центрировать контент и управлять размерами с примерами кода.
Time to read: 8