Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 12 лет назад пользователемteacode.com
1 Программирование с БД Клиент-серверная архитектура API JDBC
2 Взаимодействие программ zПриложения – замкнутые программные модули zДля повторного использования выделяют библиотеки (программ) zВзаимодействие посредством API
3 Что такое API ? zAPI – application programming interfaces zНабор процедур функций и методов, управляющих функциональностью модуля (библиотеки) zНабор элементов управления – окошек, рычажков, кнопочек и т.п.
4 JDBC – API для DBMS zDBMS (СУБД) – различные программные модули zСтандартизация – ключ к единообразию и переносимости zJDBC – набор Java-классов (интерфейсов)
5 JDBC архитектура z2-х уровневая архитектура
6 JDBC архитектура z3-х уровневая архитектура
7 Пример zвеб-приложение H2-консоль
8 Основные шаги Загрузка драйвера 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");
9 Внимание, ресурсы! Connection con; try{ con = … //открываем соединение //работаем с СУБД } finally { con.close();//закрываем соединение }
10 А где же наш любимый SQL? Statement stmt = con.createStatement(); ResultSet srs = stmt.executeQuery ( "SELECT id, name, FROM s_region "); ResultSet.next() ResultSet.getXXX()
11 Обработка результата запроса 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); }
12 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)
13 Ломаем… В окошечко пароля вводим например OR 1=1 //WHERE login = hacker AND password = OR 1=1 OR login=admin //WHERE login = hacker AND password = OR login = admin
14 Внимание! Экранирование строк String sql = SELECT userid FROM users WHERE login=? AND password=? PreparedStatement stmt = con.prepareStatement(sql); stmt.setString(1, login); stmt.setString(2, password);
15 Итого: zJDBC – это API для работы с СУБД в 2- х либо 3-х уровневой архитектуре zВсе параметры загрузки драйвера и установки соединения – в документации к СУБД zОсторожная обработка ресурсов zPreparedStatement
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.