Модуль 5 Рассматриваемые темы: Метаданные Групповая модификация данных Вопросы типизации Дополнительные возможности JDBC API слайд 5-1.

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



Advertisements
Похожие презентации
Модуль 4 Рассматриваемые темы: Понятие транзакции Конкурентный доступ к данным Использование транзакций в JDBC API Транзакции в JDBC API слайд 4-1.
Advertisements

Разработка телекоммуникационной и информационной системы для прогнозирования аварий и катастроф на НПЗ.
Java : доступ к базам данных, технология JDBC. Примеры баз данных.
Java Database Connectivity (JDBC) Универсальное API для доступа к данным.
условия Пакеты java.sql и javax.sql содержат классы и интерфейсы для работы с БД Для подключения к конкретной.
СУБД Microsoft Access 2003 Элементы языка SQL. Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих.
«ИЗМЕНЕНИЕ ДАННЫХ В БД» Выполнил: студент 722 группы Специальности Информационные системы (по отрослям) Токарев Виктор.
База данных База данных – это конкретная предметная область, описанная с помощью таблиц.
9 класс Запросы являются одним из основных инструментов выборки и обработки данных в таблицах базы данных. Запросы используют для анализа, просмотра и.
Work with MySQL – database in Java Tutorial For students of universities Author: Dudnik Oxana.
Основы SQL Запросы к базе данных. Что такое база данных SQL? SQL (Structured Query Language - «Структурированный язык запросов») - универсальный компьютерный.
Обеспечение целостности данных Процедурное. Хранимые процедуры Хранимые процедуры пишутся на специальном встроенном языке программирования, они могут.
Элементы БД Таблицы Таблицы Формы Формы Запросы Запросы.
Введение в SQL (НЕ select) Затрагиваемые темы Роль языка SQL. Части SQL Роль языка SQL. Части SQL Администрирование БД: привилегии (DCL) Администрирование.
Базы данных. Введение Базы данных обеспечивают хранение информации. Доступ к базе данных осуществляется через специальную программу - систему управления.
5.2. Представление о мире (VIEW)Представления предназначены для сохранения результатов выполнения запросов в виде таблиц. В отличие от хранимых процедур.
Соколова В. В. Поддержка баз данных в РНР. Соколова В. В. Лаб 6 Работа с базами данных в РНР В РНР реализована обширная поддержка практически всех существующих.
СУБД Access Запросы Автор: Тутыгин В.С.. Назначение запросов Запросы обеспечивают простой доступ к определенному подмножеству записей одной или нескольких.
Базы данных MICROSOFT ACCESS. Оглавление Введение Microsoft Access. Основные понятия. Таблицы Связи между таблицами. Формы Запросы Отчёты Создание базы.
Система контроля прав доступа При помощи процедур и триггеров в MySQL.
Транксрипт:

Модуль 5 Рассматриваемые темы: Метаданные Групповая модификация данных Вопросы типизации Дополнительные возможности JDBC API слайд 5-1

Дополнительные возможности Метаданные – это информация о данных в БД и возможностях СУБД Метаданные включают в себя: Информацию о схеме БД Информацию о возможностях БД Без использования метаданных невозможно построить действительно переносимого клиента слайд 5-2 Метаданные, или метаинформация

Дополнительные возможности Метаданные представлены в JDBC API 2 двумя интерфейсами: DatabaseMetaData ResultSetMetaData Оба варианта содержат огромное количество информации слайд 5-3 Использование метаданных в JDBC API

Дополнительные возможности Для получения объектов метаданных следует воспользоваться методами: DatabaseMetaData Connection.getMetaData() ResultSetMetaData ResultSet.getMetaData() слайд 5-4 Использование метаданных в JDBC API

Получение списка таблиц String catalog = null; String schemaPattern = null; String tableNamePattern = null; String[] types = null; ResultSet result = databaseMetaData.getTables( catalog, schemaPattern, tableNamePattern, types ); while(result.next()) { String tableName = result.getString(3); }

Получение списка колонок String catalog = null; String schemaPattern = null; String tableNamePattern = "my_table"; String columnNamePattern = null; ResultSet result = databaseMetaData.getColumns( catalog, schemaPattern, tableNamePattern, columnNamePattern); while(result.next()){ String columnName = result.getString(4); int columnType = result.getInt(5); }

Дополнительные возможности Часто востребованная информация о базе: Информация о схеме БД Какие типы данных использует СУБД Какие уровни изоляции транзакций поддерживает СУБД Поддерживает ли СУБД групповую модификацию Какие специфические SQL-выражения поддерживает СУБД Под каким пользователем произведен вход слайд 5-7 Метаданные базы, DatabaseMetaData

Дополнительные возможности слайд 5-8 Метаданные выборки, ResultSetMetaData Метаданные выборки – подмножество метаданных базы Только информация о схеме БД, которая участвовала в выборке

Дополнительные возможности слайд 5-9 Выводы по метаданным Метаданные необходимо использовать для построения действительно переносимого клиента БД Метаданные предоставляют исчерпывающую информацию о схеме БД и о возможностях СУБД

Дополнительные возможности Рассматриваемые темы: Метаданные Групповая модификация данных Вопросы типизации слайд 5-10

SQL-запросы к СУБД SQL-выражения, модифицирующие данные ( INSERT, UPDATE, DELETE ), упаковываются в один пакет и пересылаются на сервер БД для выполнения Это дает выигрыш в производительности по сравнению с несколькими независимыми запросами слайд 5-11 Групповая модификация данных

SQL-запросы к СУБД Интерфейс Statement предлагает методы работы с batch-update: void addBatch(String sql) void clearBatch() int[] executeBatch() возвращает массив статусов выполнения модификаций данных слайд 5-12 Групповая модификация данных

SQL-запросы к СУБД Для ускорения работы групповых обновлений рекомендуется явно начинать транзакцию и явно завершать её после группового обновления Чем не устраивает auto-commit? слайд 5-13 Групповая модификация данных

SQL-запросы к СУБД Проверить поддержку batch-update Создать Connection и Statement Отключить auto-commit Добавить одно или несколько SQL-выражений в Statement методом addBatch() Запустить группу на выполнение методом executeBatch() Проверить ошибки и предупреждения Подтверждение транзакции Проанализировать результаты слайд 5-14 Алгоритм групповой модификации данных

SQL-запросы к СУБД Групповая модификация данных хорошо сочетается с подготовленными запросами Не все сервера БД поддерживают групповую модификацию данных. Необходимо анализировать метаинформацию слайд 5-15 Групповая модификация данных

SQL-запросы к СУБД слайд 5-16 Пример групповой модификации данных connection.setAutoCommit( false ); try { statement.addBatch( INSERT INTO employees VALUES (1000, 'Joe Jones') ); statement.addBatch( INSERT INTO departments VALUES (260, 'Shoe') ); statement.addBatch( INSERT INTO emp_dept VALUES (1000, '260') ); int [] updateCounts = statement.executeBatch(); } catch( BatchUpdateException b ) { System.err.println( "Update counts of successful commands: " ); int [] updateCounts = b.getUpdateCounts(); for (int i = 0; i < updateCounts.length; i ++) System.err.print(updateCounts[i] + " "); } con.commit(); MyDBClient.java

SQL-запросы к СУБД Групповую модификацию следует использовать для повышения производительности Групповая модификация данных хорошо сочетается с подготовленными запросами Не все сервера БД поддерживают групповую модификацию данных, необходимо анализировать метаинформацию слайд 5-17 Выводы по групповой модификации

Дополнительные возможности Рассматриваемые темы: Метаданные Групповая модификация данных Вопросы типизации слайд 5-18

SQL-запросы к СУБД Как отобразить SQL-тип данных на Java-тип при снятии значения поля при анализе выборки? Особенно, с учетом того, что многие СУБД имею нестандартные типы? Типизация значений полей слайд 5-19

SQL-запросы к СУБД Проблема 1. Различные имена схожих типов в различных СУБД JDBC объявляет набор базовых типов SQL в классе java.sql.Types как static- константы Если необходимо сформировать SQL- запрос, где имя типа должно быть в виде строки, стоит воспользоваться метаинформацией СУБД Типизация значений полей слайд 5-20

SQL-запросы к СУБД Проблема 2. Тип не известен на этапе компиляции JDBC предлагает методы: ResultSet.getObject() PreparedStatement.setObject() CallableStatement.getObject() Тип java.sql.Types.OTHER Далее необходимо run-time приведение типов Типизация значений полей слайд 5-21

SQL-запросы к СУБД Проблема 3. Соответствие типов Java и SQL JDBC регламентирует отображение примитивных (методы setXXX() и getXXX() ) и объектных (методы setObject() и getObject() ) типов Java на типы SQL и обратно Но это зависит от производителя слайд 5-22 Типизация значений полей

Дополнительные возможности Рассмотренные темы: Метаданные Групповая модификация данных Вопросы типизации слайд 5-23