JDBC – программный пакет для работы с БД Базы данных: учебный курс Основные пакеты в Java для работы с БД java.sql.* - основные классы для работы с данными.

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



Advertisements
Похожие презентации
Work with databases in Java. JDBC Tutorial for students of universities Author: Dudnik Oxana.
Advertisements

Работа с базами данных – JDBC Введение в JDBC. JDBC JDBC (Java DataBase Connectivity) – технология доступа к базам данных для Java Состоит из: API (java.sql.
Java Database Connectivity (JDBC). Взаимодействие СУБД с приложениями на Java JDBC предполагает, что база данных, с которой взаимодействует программа,
Язык программирования Java Дмитриев Андрей Владиславович Май 2007.
условия Пакеты java.sql и javax.sql содержат классы и интерфейсы для работы с БД Для подключения к конкретной.
Язык программирования Java Андрей Дмитриев ©2009.
Разработка телекоммуникационной и информационной системы для прогнозирования аварий и катастроф на НПЗ.
Программирование с БД Клиент-серверная архитектура API JDBC.
Процедуры Базы данных: учебный курс Некоторые операции, рассматриваемые как неделимые, трудно выразить с помощью одного запроса к БД. Примеры: занести.
Тема 7 Робота з базами даних. Поняття про JDBC Можливості, повязані з доступом з Java-програм до баз даних. Такі засоби утворюють інтерфейс JDBC (Java.
Java : доступ к базам данных, технология JDBC. Примеры баз данных.
Understanding Record and Table Locking In OpenEdge ® SQL Applications Jeff Owen Principle Software Engineer, OESQL Progress Software Session 132.
16 Copyright © 2004, Oracle. All rights reserved. Using JDBC to Access the Database.
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Java Database Connectivity (JDBC) Универсальное API для доступа к данным.
Test 9 Вопрос 1. public class A { private String runNow() { return "High"; } static class B extends A { public String runNow() { return "Low"; } } public.
Основы реляционных баз данных Лекция 6. Введение в SQL Желенкова Ольга Петровна, с.н.с. ОИ САО РАН, к.ф.-м.н апреля 2008.
Test 14 Вопрос 1. class Main { public void method() { static class One { public One() { System.out.println("From one"); } } public static void main(String...
Test 5 Вопрос 1. В результате компиляции каких строк будет происходить ошибка компиляции: public class Main { public static void main(String[] args) {
PL/SQL Пакеты. Определение Пакет – это объект схемы данных, объединяющий набор типов, объектов и подпрограмм PL/SQL.
Транксрипт:

JDBC – программный пакет для работы с БД Базы данных: учебный курс Основные пакеты в Java для работы с БД java.sql.* - основные классы для работы с данными sun.jdbc.odbc.* - классы и интерфейсы моста JDBC – ODBC. Основные классы и интерфейсы java.sql.Connection – соединение с драйвером БД; java.sql.DriverManager – загрузка и манипулирование драйверами БД; java.sql.Statement – объекты для исполнения SQL-предложений; java.sql.ResultSet – объекты для обработки результатов Select -запросов; java.sql.SQLException – прерывания при работе с БД; sun.jdbc.odbc.JdbcOdbcDriver – драйвер моста JDBC – ODBC.

JDBC – программный пакет для работы с БД Базы данных: учебный курс Схема работы с БД из программ на Java 1.Загрузить класс(ы), реализующие необходимые драйверы Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 2.Установить соединение с БД, используя загруженный драйвер DriverManager.getConnection("jdbc:odbc:dsn"); 3.Создать объект(ы) для исполнения SQL-команд connection.createStatement(); 4.Исполнять необходимые SQL-команды stmt.executeUpdate("Delete From MyTable Where Id=1"); stmt.executeQuery("Select * From MyTable"); 5.Обрабатывать полученные таблицы result.getString("fieldName"); 6.Закрыть открытые соединения connection.close();

JDBC – программный пакет для работы с БД Базы данных: учебный курс Пример программы import java.sql.*; public static void main(String[] args) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn = DriverManager.getConnection("jdbc:odbc:dsn"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("Select * From positions"); while (rs.next()) { String s = rs.getString("name"); System.out.println("Position name = " + s); } } catch (SQLException ex) { ex.printStackTrace(); } try { conn.close(); } catch (SQLException e) {} }

JDBC – программный пакет для работы с БД Базы данных: учебный курс Загрузка драйвера и установление соединения с БД 1.При загрузке класса драйвера он регистрируется в DriverManager. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); com.mysql.jdbc.Driver.class; import com.microsoft.jdbc.sqlserver.*; Driver driver = new SQLServerDriver(); 2.Установить соединение с БД можно, используя менеджер Connection conn = DriverManager.getConnection("jdbc:odbc:dsn"); Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test","root","root"); Properties props = new Properties(); props.put("user", "admin"); props.put("password", "myPwd"); Connection conn = driver.connect( "jdbc:microsoft:sqlserver://localhost:1433", props);

JDBC – программный пакет для работы с БД Базы данных: учебный курс Интерфейс Connection 1.Создание «предложений» для работы с БД Statement stmt = connection.createStatement(); PreparedStatement pst = connection.prepareStatement(sql); CallableStatement cst = connection.prepareCall(sql); 2.Работа с транзакциями connection.setAutoCommit(false); connection.commit(); connection.rollback(); 3.Закрытие соединения connection.close();

JDBC – программный пакет для работы с БД Базы данных: учебный курс Создаем в базе данных таблицы и заносим данные Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); try { Connection conn = DriverManager.getConnection( "jdbc:odbc:projects"); Statement stmt = conn.createStatement(); String createTable = "CREATE TABLE roles ( + "Sortorder INTEGER, Name VARCHAR, PRIMARY KEY (Sortorder)); stmt.executeUpdate(createTable); String insertData1 = "INSERT INTO roles (Sortorder, Name) " + "VALUES(10, 'Project Leader'); String insertData2 = "INSERT INTO roles (Sortorder, Name) " + "VALUES(20, 'Developer')"; stmt.executeUpdate(insertData1); stmt.executeUpdate(insertData2); conn.close(); } catch (SQLException x) { x.printStackTrace(); }

JDBC – программный пакет для работы с БД Базы данных: учебный курс Параметризованные SQL-предложения Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); try { Connection conn = DriverManager.getConnection( "jdbc:odbc:projects"); String insertData = "INSERT INTO roles (Sortorder, Name) " + "VALUES(?, ?)"; PreparedStatement stmt = conn.prepareStatement(insertData); stmt.setInt(1, 30); stmt.setString (2, "QA Engineer"); stmt.executeUpdate(); conn.close(); } catch (SQLException x) { x.printStackTrace(); }

JDBC – программный пакет для работы с БД Базы данных: учебный курс Получение данных с помощью SELECT-предложений Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); try { Connection conn = DriverManager.getConnection( "jdbc:odbc:projects"); String selectData = "SELECT Name, Salary FROM positions"; Statement stmt = conn.createStatement(selectData); ResultSet rs = stmt.executeQuery(); System.out.println("Name\tSalary"); System.out.println(" "); while (rs.next()) { String name = rs.getString("Name"); int salary = rs.getInt("Salary"); System.out.println(name + '\t' } conn.close(); } catch (SQLException x) { x.printStackTrace(); }

JDBC – программный пакет для работы с БД Базы данных: учебный курс Исследование полученных данных private static void printTable(Connection conn, String sql) { try { Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); int colCount = rsmd.getColumnCount(); for (int i = 1; i

JDBC – программный пакет для работы с БД Базы данных: учебный курс Какую еще информацию можно получить, исследуя метаданные? ResultSetMetaData rsmd = rs.getMetaData(); int count = rsmd.getColumnCount(); String fieldName = rsmd.getColumnName(i); int type = rsmd.getColumnType(i); // Types.VARCHAR, Types.INTEGER,... String typeName = rsmd.getColumnTypeName(i); // Как его возвращает драйвер БД, например "counter". String className = rsmd.getColumnClassName(i); // С точки зрения языка Java, например, "java.math.BigDecimal". boolean curr = rsmd.isCurrency(i); int nullable = rsmd.isNullable(i); // columnNullable, columnNoNulls, columnNullableUnknown Можно также получать метаданные о таблице, самой базе данных,… DatabaseMetaData md = conn.getMetaData(); int maxRowSize = md.getMaxRowSize(); ResultSet metaRs = md.getTables(catalog, schema, tabName, types);

JDBC – программный пакет для работы с БД Базы данных: учебный курс Работа с курсором: изменение, добавление и удаление данных // Увеличиваем все зарплаты на 10 процентов private static void updateSalaries(Connection conn) { try { Statement stmt = conn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, // Можно перемещать ResultSet.CONCUR_UPDATABLE); // Можно изменять данные ResultSet rs = stmt.executeQuery("Select * From positions"); while (rs.next()) { rs.updateInt("Salary", (int)(rs.getInt("Salary") * 1.1)); rs.updateRow(); } } catch (SQLException x) { x.printStackTrace(); } } // Конечно, того же эффекта можно было бы добиться, // просто исполнив предложение // UPDATE positions SET Salary = Salary * 1.1

JDBC – программный пакет для работы с БД Базы данных: учебный курс Если курсор перемещаемый ( TYPE_SCROLL_SENSITIVE ), то с ним можно выполнять следующие действия: ResultSet rs =...; rs.absolute(1); rs.beforeFirst(); rs.afterLast(); rs.first(); rs.last(); rs.next() rs.previous(); rs.relative(-5); Если курсор перемещаемый только вперед ( TYPE_FORWARD_ONLY ), то с ним можно выполнять только next()

JDBC – программный пакет для работы с БД Базы данных: учебный курс Если курсор «заменяемый» ( TYPE_CONCUR_UPDATEABLE ), то можно заменять, добавлять и удалять данные: // Замена rs.updateInt(column, newData);... // другие изменения в текущей записи rs.updateRow(); // Добавление rs.updateString(column, newData);... // другие добавления в запись rs.insertRow(); // Удаление rs.deleteRow(); Если SELECT -предложение сложное, то может быть, данные невозможно будет изменить, даже несмотря на то, что курсор UPDATEABLE.

JDBC – программный пакет для работы с БД Базы данных: учебный курс Подготовка процедуры, составленной из нескольких подряд исполняемых SQL-предложений (batch). Statement stmt = conn.createStatement(); stmt.addBatch("Update positions Set Salary = Salary * 1.2 " + "Where Name Like '%Engineer%'"); stmt.addBatch("Update positions Set Salary = Salary * 1.5 " + "Where Name Like '%Director%'"); int[] results = stmt.executeBatch(); stmt.clearBatch();