- •Работа с субд PostgreSql
- •Работа с субд PostgreSql
- •Введение
- •1Установка PostgreSql
- •2Создание новой бд
- •2.1Создание новой бд
- •2.2Создание новой таблицы
- •2.3Создание связей между таблицами
- •3Создание индексов
- •4Доступ к PostgreSql из Java
- •4.1Соединение с PostgreSql
- •4.2Взаимодействие с бд
- •5Создание представлений
- •6Хранимые процедуры и Триггеры
- •6.1Хранимые процедуры
- •6.1.1Оператор Create Function языка pl/pgSql
- •6.1.2Создание хранимых процедур в pgAdmin III
- •6.1.3Вызов хранимых процедур в Java
- •6.2Триггеры бд
- •6.2.1Синтаксис определения триггера в PostgreSql
- •6.2.2Создание триггера в PgAdmin III
- •7Права доступа
- •Создание ролей;
- •7.1Создание ролей
- •7.2Назначение прав доступа
- •7.3Отмена прав доступа
- •7.4Проверка прав доступа
- •8Резервное копирование и восстановление бд
- •8.1Резервное копирование (BackUp) бд
- •8.2Восстановление (Restore) бд
- •8.3Создание sql-дампа бд
- •8.4Восстановление sql-дампа бд
- •8.5Восстановление sql-дампа средствами pgAdmin III
- •9Особенности взаимодействия субд access и PostgreSql
- •9.1Подготовка соединения PostgreSql с бд в Access
- •9.2Копирование таблиц Access в таблицы PostgreSql
- •9.3Подключение таблиц PostgreSql к бд в Access
- •10Администрирование PostgreSql
- •Литература
4.2Взаимодействие с бд
Имея соединение с БД, можно создавать объекты типа Statement, служащие для исполнения запросов к БД на языке SQL.
Существуют три типа Statement, различающиеся по назначению:
java.sql.Statement — служит для выполнения непараметрических запросов общего назначения;
java.sql.PreparedStatement — служит для выполнения запросов, содержащих подставляемые параметры (обозначаются символом '?' в теле запроса);
java.sql.CallableStatement — предназначен для вызова хранимых процедур (см. ниже).
Интерфейс java.sql.ResultSet позволяет легко обрабатывать результаты запроса.
Сначала выполним соединение с БД.
import java.sql.*;
//Загрузка драйвера
Class.forName ("org.postgresql.Driver");
//Class.forName ("com.mysql.jdbc.Driver");
//Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
//Формирование URL
String URL = "jdbc:postgresql://localhost: 5432/dekanat";
//String URL = "jdbc:mysql://localhost:3306/dekanat"; // для БД в MySql
//String URL = "jdbc:odbc:DekanatPsql"; // ODBC для БД в PostgreSql
//Cоединение
Connection dbс = DriverManager.getConnection(URL, "Ivanov", "123456");
Теперь выполним непараметрический запрос
//Утверждение
Statement st = dbс.createStatement();
//Выполнение и результат запроса
ResultSet rs = st.executeQuery("select * from students where StStipend > 600");
//обработка. Вывод содержимого 2-х столбцов
while (rs.next()) { System.out.println(rs.getString(1));
System.out.println(rs.getString("StName") + "\t" + rs.getString("StStipend")); }
rs.close();
st.close();
Теперь выполним параметрический запрос, используя объект
PreparedStatement pst = dbс.createPreparedStatement();
// Формирование текста запроса с 2-мя параметрами
String SQLTxt := "select , StName, StBrthDate, StStipend " +
"from Students " +
"where StStipend > ? and GrNo = ?";
Перед выполнением объекта PreparedStatement надо установить значения всех его параметров. Это делается с помощью методов setXXX, где XXX - это тип параметра. Например, если параметр имеет Java-тип int, используемый метод будет setInt.
Первый аргумент методов setXXX - это порядковый номер параметра, а второй - значение, в которое надо его установить. Например, следующий код устанавливает первый параметр в значение 600, а второй - в 2:
pst.setLong(1, 600);
pst.setInt(2, 2);
После установки параметра его можно использовать при многократном выполнении выражения до тех пор, пока он не очистится методом clearParameters.
//выполнение и результат запроса
ResultSet rs = pst.executeQuery(SQLTxt);
//обработка. Вывод содержимого 2-х столбцов
while (rs.next()) { System.out.println(rs.getString("StName") + "\t" +
rs.getString("StStipend")); }
rs.close();
pst.close();
5Создание представлений
В PostgreSQL поддерживается возможность создания представлений (View).
Рассмотрим процесс создания представления средствами pgAdmin III для конкретного примера: “Создать представление, содержащее фамилии студентов группы КC-041”.
Для этого в pgAdmin III необходимо в окне Браузер объектов для БД «Деканат ВУЗа» активизировать контекстное меню представлений (Виды, Views) (рисунок 4.1).
Рисунок 4.1 – Контекстное меню представлений
После выбора пункта меню Новый вид откроется окно Новое представление. На закладке Свойства необходимо определить Имя нового представления и его Владельца (рисунок 4.2).
Рисунок 4.2 – Окно Новое представление
Далее необходимо перейти на закладку Определение и ввести предложение Select, на основе которого будет создано новое представление (рисунок 4.3). После чего нажать ОК.
Рисунок 4.3 – Закладка Определение с предложением Select
Запрос создания нового представления можно просмотреть на закладке SQL (рисунок 4.4).
Рисунок 4.4 – Директива создания представления
В результате выполнения этих действий в окне Браузер объектов появится новое представление (рисунок 4.5).
Рисунок 4.5 – Окно Браузер объектов
Просмотреть содержимое представления можно таким же образом, как и содержимое таблицы, путем выбора соответствующего объекта в окне Браузер объектов и нажатия кнопки Просмотр данных в выбранном объекте (рисунок 4.6).
Рисунок 4.6 – Просмотр содержимого представления