Java : доступ к базам данных, технология JDBC. Примеры баз данных.

Презентация:



Advertisements
Похожие презентации
Разработка телекоммуникационной и информационной системы для прогнозирования аварий и катастроф на НПЗ.
Advertisements

Поскольку каждая СУБД является отдельным программным продуктом, для подключения к ней Java использует специальный драйвер, который пишется разработчиками.
Программирование с БД Клиент-серверная архитектура API JDBC.
CREATE TABLE Ident_table ( ID int IDENTITY(1, 1), some_values varchar(50)); IDENTITY [ ( seed, increment ) ]
«ИЗМЕНЕНИЕ ДАННЫХ В БД» Выполнил: студент 722 группы Специальности Информационные системы (по отрослям) Токарев Виктор.
условия Пакеты java.sql и javax.sql содержат классы и интерфейсы для работы с БД Для подключения к конкретной.
Процедуры Базы данных: учебный курс Некоторые операции, рассматриваемые как неделимые, трудно выразить с помощью одного запроса к БД. Примеры: занести.
Введение в SQL (НЕ select) Затрагиваемые темы Роль языка SQL. Части SQL Роль языка SQL. Части SQL Администрирование БД: привилегии (DCL) Администрирование.
База данных База данных – это конкретная предметная область, описанная с помощью таблиц.
Java Database Connectivity (JDBC) Универсальное API для доступа к данным.
Лекция 3 Домены Ограничения на значения столбцов Создание, изменение и удаление таблиц Ключи и ссылочная целостность Защита таблиц.
Модуль 5 Рассматриваемые темы: Метаданные Групповая модификация данных Вопросы типизации Дополнительные возможности JDBC API слайд 5-1.
Модуль 4 Рассматриваемые темы: Понятие транзакции Конкурентный доступ к данным Использование транзакций в JDBC API Транзакции в JDBC API слайд 4-1.
Бланк запроса. Создание списка специальностей Вид при конструирования запросов.
Типы задач на коллоквиум 2 Реляционные и объектные модели для: – Хранения и работы с деревом произвольной глубины – Хранения и работа с графом – Работы.
JDBC Работа СУБД Oracle. JDBC JDBC – прикладной программный интерфейс (API) для выполнения SQL-запросов. Состоит из множества классов и интерфейсов, написанных.
Тема 7 Робота з базами даних. Поняття про JDBC Можливості, повязані з доступом з Java-програм до баз даних. Такі засоби утворюють інтерфейс JDBC (Java.
Создание Web страниц Урок 12: PHP & MySQL Павел Бочаров.
Лекция 16 Лекция 16 Основы SQL. Описание отношений, доменов, ограничений целостности, представлений данных. Реализация операций реляционной алгебры в SQL.
Work with databases in Java. JDBC Tutorial for students of universities Author: Dudnik Oxana.
Транксрипт:

Java : доступ к базам данных, технология JDBC

Примеры баз данных

Создание источника данных Создаем новую БД (Apache Derby) - example Выбираем в списке jdbc:derby://localhost:1527/example, команда Connect Создаем новые таблицы – команда Execute command на узле Tables Вводим sql-скрипт…

SQL-скрипт : таблица PERSON CREATE TABLE PERSON( ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), FIRSTNAME VARCHAR(255) NOT NULL, MIDDLENAME VARCHAR(255), LASTNAME VARCHAR(255) ); В контекстном меню выбираем Run statement

SQL-скрипт : таблица DEPARTMENT CREATE TABLE DEPARTMENT( ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), BRIEFNAME VARCHAR(80) NOT NULL, FULLNAME VARCHAR(255) );

SQL-скрипт : таблица EMPLOYEE CREATE TABLE EMPLOYEE( ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), POSITION_TITLE VARCHAR(255) NOT NULL, PERSON INTEGER NOT NULL REFERENCES PERSON(ID) ON DELETE CASCADE, DEPARTMENT INTEGER NOT NULL REFERENCES DEPARTMENT(ID) ON DELETE CASCADE );

Проект в среде NetBeans Требуется добавить библиотеку JavaDB Driver: в дереве проекта – Libraries, Add library, import, JavaDB Driver

Основы JDBC Для работы с БД используется драйвер конкретной СУБД и интерфейсы из пакета java.sql (из Java SE SDK); За регистрацию драйвера и создание подключений отвечает класс DriverManager; Подключение представлено интерфейсом Connection; Запросы – подклассами Statament (PreparedStatement и CallableStatement); Результаты выборки доступны через ResultSet.

Создание подключения, обработка исключений 1. Регистрация драйвера: DriverManager.registerDriver( new org.apache.derby.jdbc.AutoloadedDriver() ); 2. Создание подключения: Connection conn = null; try{ conn = DriverManager.getConnection( "jdbc:derby://localhost:1527/example", "user", "user" ); //conn. – вызов методов, работа с СУБД }finally{ try{ conn.close(); }catch( Exception closeExc ){} }

Параметры подключения public Connection getConnection( String url, String login, String passwd ); Для различных СУБД используются разные URL (Connection String, Строка подключения): СУБДConnection string MySQLjdbc:mysql://localhost:3306/client_test_db Apache Derbyjdbc:derby://localhost:1527/example PostgreSQLjdbc:postgresql://localhost:5432/tpl_db

Выполнение запросов (INSERT, UPDATE, DELETE) PreparedStatement ps = null; try{ ps = conn.prepareStatement( "insert into person(firstname,middlename,lastname) values(?,?,?) ); ps.setString(1, "Иванов" ); ps.setString(2, "Иванович"); ps.setString(3, "Иван"); int cnt = ps.executeUpdate(); System.out.println( Добавлено строк: " + cnt ); }finally{ try{ ps.close(); }catch( Exception closeExc ){} }

Выполнение запросов (SELECT) Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try{ //Создание соединения //… ps = conn.prepareStatement( "select id, firstname, lastname from person where middlename like ?" ); ps.setString(1, И% ); rs = ps.executeQuery(); while( rs.next() ){ int id = rs.getInt(1); String firstName = rs.getString( firstname ); String lastName = rs.getString( 3 ); } }finally{ try{ rs.close(); }catch( Exception closeexc ){} try{ ps.close(); }catch( Exception closeexc ){} try{ conn.close(); }catch( Exception closeexc ){} }

Работа с транзакциями conn = reconnect( … ); conn.setAutoCommit( false ); try{ PreparedStatement ps = … ps.executeUpdate(); //… ps.executeUpdate(); //… ps.executeUpdate(); //Сохранение всех изменений conn.commit(); }catch( Exception exc ){ //Откат трех обновлений try{ conn.rollback(); }catch( … ){ … } }finally{ try{ conn.close(); }catch( … ){ … } }

Использование мета-данных // //Для всех колонок выборки вывести значения // ps = conn.prepareStatement( "select * from person where lastname like ?" ); ps.setString( 1, "a%" ); ResultSet rs = ps.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); for( int i = 0; i < rsmd.getColumnCount(); i++ ){ System.out.printf( "%15s", rsmd.getColumnName(i+1) ); } System.out.println(); while( rs.next() ){ for( int i = 0; i < rsmd.getColumnCount(); i++ ){ System.out.printf( "%15s", rs.getString(i+1) ); } System.out.println(); }

Задание 1 Разработать форму для работы с таблицей DEPARTMENT. При загрузке в таблицу выводятся все подразделения. Поля доступны для редактирования. Изменения заносятся в базу данных по команде «Сохранить». По команде «Отмена» происходит повторная загрузка данных из БД.

Задание 2* Разработать аналогичную форму для работы с таблицей PERSON. В верхней части формы находится компонент JComboBox при смене значения в котором происходит переключение между таблицами DEPARTMENT и PERSON. Редактирование записей организовать аналогичным образом.

Задание 3* Разработать форму для отображения всех сотрудников, представленных в таблице EMPLOYEE. Из предыдущих форм исключить все кнопки («+», «-», «Отмена», «Сохранить»). Для первоначального заполнения таблицы использовать средства NetBeans.