Программирование с БД Клиент-серверная архитектура API JDBC.

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



Advertisements
Похожие презентации
Java Database Connectivity (JDBC) Универсальное API для доступа к данным.
Advertisements

Тема 7 Робота з базами даних. Поняття про JDBC Можливості, повязані з доступом з Java-програм до баз даних. Такі засоби утворюють інтерфейс JDBC (Java.
условия Пакеты java.sql и javax.sql содержат классы и интерфейсы для работы с БД Для подключения к конкретной.
JDBC Работа СУБД Oracle. JDBC JDBC – прикладной программный интерфейс (API) для выполнения SQL-запросов. Состоит из множества классов и интерфейсов, написанных.
Java : доступ к базам данных, технология JDBC. Примеры баз данных.
Разработка телекоммуникационной и информационной системы для прогнозирования аварий и катастроф на НПЗ.
Работа с базами данных – JDBC Введение в JDBC. JDBC JDBC (Java DataBase Connectivity) – технология доступа к базам данных для Java Состоит из: API (java.sql.
Поскольку каждая СУБД является отдельным программным продуктом, для подключения к ней Java использует специальный драйвер, который пишется разработчиками.
Work with databases in Java. JDBC Tutorial for students of universities Author: Dudnik Oxana.
Процедуры Базы данных: учебный курс Некоторые операции, рассматриваемые как неделимые, трудно выразить с помощью одного запроса к БД. Примеры: занести.
Корпоративные системы Лекция 5. Механизмы доступа к БД через Web-интерфейс.
JDBС 4.0 Statement. Creation & executing.. В JDBC есть три класса для посылки SQL-запросов в БД и три метода в интерфейсе Connection создают экземпляры.
Нарушение целостности структуры SQL-запроса. Внедрение SQL-кода (SQL injection) один из распространённых способов взлома ПО, работающего с базами данных,
SQL-injections for dummies. Что это? Способ несанкционированного доступа к данным, хранящимся в БД, основанный на внедрении в запрос произвольного SQL-
Work with MySQL – database in Java Tutorial For students of universities Author: Dudnik Oxana.
Департамент образования и науки Тюменской области Государственное автономное профессиональное образовательное учреждение Тюменской области «Западно-Сибирский.
Тамбовский государственный университет имени Г.Р. Державина Институт математики, физики и информатики Кафедра информатики и информационных технологий Иванова.
Модуль 2 Рассматриваемые темы: Схемы взаимодействия с СУБД Введение в JDBC API Структура JDBC-программы Типы JDBC-драйверов Архитектура JDBC слайд 2-1.
Язык программирования Java Дмитриев Андрей Владиславович Май 2007.
ПЛИСКО ВЯЧЕСЛАВ. Удобная работа с базой данных в PHP.
Транксрипт:

Программирование с БД Клиент-серверная архитектура API JDBC

Взаимодействие программ zПриложения – замкнутые программные модули zДля повторного использования выделяют библиотеки (программ) zВзаимодействие посредством API

Что такое API ? zAPI – application programming interfaces zНабор процедур функций и методов, управляющих функциональностью модуля (библиотеки) zНабор элементов управления – окошек, рычажков, кнопочек и т.п.

JDBC – API для DBMS zDBMS (СУБД) – различные программные модули zСтандартизация – ключ к единообразию и переносимости zJDBC – набор Java-классов (интерфейсов)

JDBC архитектура z2-х уровневая архитектура

JDBC архитектура z3-х уровневая архитектура

Пример zвеб-приложение H2-консоль

Основные шаги Загрузка драйвера Class.forName("org.h2.Driver"); Class.forName( "org.apache.derby.jdbc.EmbeddedDriver"); Установка соединения Connection conn = DriverManager. getConnection("jdbc:h2:~/test", "sa", ""); String url = "jdbc:derby:Fred"; Connection con = DriverManager.getConnection(url, "Fernanda", "J8");

Внимание, ресурсы! Connection con; try{ con = … //открываем соединение //работаем с СУБД } finally { con.close();//закрываем соединение }

А где же наш любимый SQL? Statement stmt = con.createStatement(); ResultSet srs = stmt.executeQuery ( "SELECT id, name, FROM s_region "); ResultSet.next() ResultSet.getXXX()

Обработка результата запроса ResultSet srs = stmt.executeQuery( "SELECT COF_NAME, PRICE FROM COFFEES"); while ( srs.next() ) { String name = srs.getString("COF_NAME"); float price = srs.getFloat("PRICE"); System.out.println(name + " " + price); }

Hack (SQL INJECTION) String sql = SELECT userid FROM users WHERE login=+login+ AND password= + password + //WHERE login = admin AND password = 123 ResultSet srs = stmt.executeQuery(sql); Integer userid = srs.next().getInteger(userid)

Ломаем… В окошечко пароля вводим например OR 1=1 //WHERE login = hacker AND password = OR 1=1 OR login=admin //WHERE login = hacker AND password = OR login = admin

Внимание! Экранирование строк String sql = SELECT userid FROM users WHERE login=? AND password=? PreparedStatement stmt = con.prepareStatement(sql); stmt.setString(1, login); stmt.setString(2, password);

Итого: zJDBC – это API для работы с СУБД в 2- х либо 3-х уровневой архитектуре zВсе параметры загрузки драйвера и установки соединения – в документации к СУБД zОсторожная обработка ресурсов zPreparedStatement