Java Database Connectivity (JDBC). Взаимодействие СУБД с приложениями на Java JDBC предполагает, что база данных, с которой взаимодействует программа,

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



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

JDBC – программный пакет для работы с БД Базы данных: учебный курс Основные пакеты в Java для работы с БД java.sql.* - основные классы для работы с данными.
Работа с базами данных – JDBC Введение в JDBC. JDBC JDBC (Java DataBase Connectivity) – технология доступа к базам данных для Java Состоит из: API (java.sql.
Язык программирования Java Дмитриев Андрей Владиславович Май 2007.
Исключения в Java Макаревич Л. Г.. Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение.
Test 10 Вопрос 1. public class Test implements Iterator { // 1 private List list = new ArrayList (); // 2 public void addList(T... ts) { Collections.addAll(list,
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Особенности реализации GUI в сетях передачи информации.
Test 17 Вопрос 1. public class TKO { public static void main(String[] args) { String s = "-"; Integer x = 343; long L343 = 343L; if (x.equals(L343)) s.
Test 3 Вопрос 1. 01:package test; 02: public class Test { 03: public static void main(String [] args) { 04: Test test = new Test(); 05: System.out.println(test.toString());}
Test21 Вопрос 1. public class Test { void a1(Object... i){ System.out.println("[Object... i]"); } void a1(Integer... i){ System.out.println("[Integer...
Test 5 Вопрос 1. В результате компиляции каких строк будет происходить ошибка компиляции: public class Main { public static void main(String[] args) {
Java Collections Framework (JCF) in Java Tutorial for students of universities Author: Oxana Dudnik.
Test 13 Вопрос 1. public class StringTest { public static void main(String[] arg){ test(new String[] { null });} static void test(Object[] o){System.out.print(1);}
Test 9 Вопрос 1. public class A { private String runNow() { return "High"; } static class B extends A { public String runNow() { return "Low"; } } public.
Test 14 Вопрос 1. class Main { public void method() { static class One { public One() { System.out.println("From one"); } } public static void main(String...
Основы реляционных баз данных Лекция 6. Введение в SQL Желенкова Ольга Петровна, с.н.с. ОИ САО РАН, к.ф.-м.н апреля 2008.
Understanding Record and Table Locking In OpenEdge ® SQL Applications Jeff Owen Principle Software Engineer, OESQL Progress Software Session 132.
Hibernate&EJB3 Studybook For students of university Author Sr.Java developer Dudnik Oxana.
16 Copyright © 2004, Oracle. All rights reserved. Using JDBC to Access the Database.
Транксрипт:

Java Database Connectivity (JDBC)

Взаимодействие СУБД с приложениями на Java JDBC предполагает, что база данных, с которой взаимодействует программа, является реляционной и использует SQL для запросов. Типы JDBC-драйверов: 1. Драйвер, реализующий методы JDBC вызовами функций ODBC. Это так называемый мост (bridge) JDBC-ODBC. Непосредственную связь с базой при этом осуществляет драйвер ODBC. 2. Драйвер, реализующий методы JDBC вызовами функций API самой СУБД. 3. Драйвер, реализующий методы JDBC вызовами функций сетевого протокола, независимого от СУБД. Этот протокол должен быть, затем, реализован средствами СУБД. 4. Драйвер, реализующий методы JDBC вызовами функций сетевого протокола СУБД.

Установка соединения с базой данных import java.sql.*; public class JDBCConnection { public JDBCConnection() { } public static void main(String[] args) { try { //Загрузка класса драйвера Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //Указать источник данных ODBC String sourceURL = "jdbc:odbc:Data"; //Установить соединение с базой данных Connection databaseConnection = DriverManager.getConnection(sourceURL); System.out.println("The database connection is " + databaseConnection); }catch(ClassNotFoundException cnfe) { System.err.println(cnfe); } catch (SQLException sqle) { System.err.println(sqle); } Connection qon = DriverManager.getConnection(url, login, password); The database connection is мостик JDBC-ODBC, драйвер, который поставляется вместе с JDK

Создание источника данных

Создание таблицы в базе данных public class TestBD{ public TestBD() { } public static void main(String[] args) { String createtab; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String sourceURL = "jdbc:odbc:Data"; Connection dbConn = DriverManager.getConnection(sourceURL); //Создать предложение Statement st = dbConn.createStatement(); //Создаем таблицу try { st.execute("drop table Data"); } catch (SQLException e) { System.out.println("table doesn't need to be dropped."); } Методы интерфейса ResultSetMetaData позволяют узнать количество полученных столбцов, их имена и типы, название таблицы, имя ее владельца и прочие сведения о представленных в объекте ResultSet сведениях. Если объект st получен методом: Statement st = dbCon.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_OPDATABLE);

Создание таблицы в базе данных //Добавление таблицы createtab = "CREATE TABLE Data(CustID int PRIMARY KEY, " + "LastName VARCHAR(30), FirstName VARCHAR(30), " + "destination VARCHAR(30))"; st.executeUpdate(createtab); System.out.println("Table Data created."); //Закрыть соединение dbConn.close(); }catch(ClassNotFoundException cnfe) { System.err.println(cnfe); } catch (SQLException sqle) { System.err.println(sqle); } catch (Exception e) { System.err.println(e); } } SQL-операторы INSERT, UPDATE, DELETE, CREATE TABLE и другие в простых случаях ВЫПОЛНЯЮТСЯ методом executeUpdate ().

Заполнение базы данных public class TestTable { public TestTable() { } public static void main(String[] args) { try {... Statement st1 = dbConn.createStatement(); String sql; //Добавить информацию в базу sql = "INSERT INTO Data VALUES(1, 'Иванов', 'Иван', 'Описание')"; st1.executeUpdate(sql); …. System.out.println("Table Data populated"); dbConn.close(); }catch(ClassNotFoundException cnfe) { System.err.println(cnfe); } catch (SQLException sqle) { System.err.println(sqle); } catch (Exception e) { System.err.println(e); } }

Запросы к базе данных import java.util.*; public class TestTable implements java.io.Serializable { private int custID; private String lastName, firstName, destination; public String toString() { String outString; outString = "custID = " + this.custID + "\n"; outString += "lastName = " + this.lastName + "\n"; outString += "firstName = " + this.firstName + "\n"; outString += "destination = " + this.destination + "\n"; return outString; } public String retrieveFromDB() { java.sql.Connection dbConn = null; Statement st1 = null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String sourceURL = "jdbc:odbc:Data"; dbConn = DriverManager.getConnection(sourceURL); st1 = dbConn.createStatement(); String getString = "SELECT * FROM Data "; ResultSet results = st1.executeQuery(getString); while (results.next()) { custID = results.getInt("custID"); lastName = results.getString("lastName"); firstName = results.getString("firstName"); destination = results.getString("destination"); System.out.println(this); } return "Successful Retrieval"; } catch (Exception e) { return "UnSuccessful Retrieval"; } finally { try { if (st1 != null) st1.close(); if (dbConn != null) dbConn.close(); } catch (SQLException sqle) { } } public static void main(String[] args) { TestTable ttr = new TestTable(); System.out.println("The contents of the database:"); System.out.println(ttr.retrieveFromDB()); } } custID = 1 lastName = Иванов firstName = Иван destination = Описание … custID = 5 lastName = Петренко firstName = Александр destination = Описание1 Successful Retrieval

Запросы к базе данных String getString = "SELECT * FROM Data WHERE CustID=3"; ResultSet results = statement1.executeQuery(getString); while (results.next()) { custID = results.getInt("custID"); lastName = results.getString("lastName"); firstName = results.getString("firstName"); destination = results.getString("destination"); System.out.println(this); } return "Successful Retrieval"; } catch (Exception e) { return "UnSuccessful Retrieval"; } finally { try { if (statement1 != null) statement1.close(); if (dbConn != null) dbConn.close(); } catch (SQLException sqle) { } } public static void main(String[] args) { TestTable ttr = new TestTable(); System.out.println("The contents of the database:"); System.out.println(ttr.retrieveFromDB()); } } The contents of the database: custID = 3 lastName = Сидоров firstName = Сидр destination = Описание новое Successful Retrieval

Изменение данных в таблице public class TestTableAlteration extends JFrame implements ActionListener { private int custID; private String lastName, firstName, destination; JTextField tfCustID = new JTextField(20); JTextField tfLastName= new JTextField(20); JTextField tfFirstName= new JTextField(20); JTextField tfDestination= new JTextField(20); JLabel lCustID = new JLabel("CustID"); JLabel lLastName = new JLabel("LastName"); JLabel lFirstName = new JLabel("FirstName"); JLabel lDestination = new JLabel("Destination"); JButton btnRetrieve= new JButton("Найти"); JButton btnStore= new JButton("Обновить"); java.sql.Connection dbConn = null; Statement st1 = null; public TestTableAlteration() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p1 = new JPanel(); p1.add(lCustID); p1.add(tfCustID); p1.add(lLastName); p1.add(tfLastName); p1.add(lFirstName); p1.add(tfFirstName); p1.add(lDestination); p1.add(tfDestination); p1.add(btnRetrieve); p1.add(btnStore); btnRetrieve.addActionListener(this); btnStore.addActionListener(this); getContentPane().add(p1); setTitle("Altering Table Data"); setBounds( 100, 100, 315, 300); setVisible(true); } public void actionPerformed(ActionEvent ae) { if (ae.getActionCommand().equals("Найти")) { if (tfCustID.getText().equals("")) System.out.println("please enter a CustID"); else { this.custID = Integer.parseInt(tfCustID.getText()); retrieveFromDB(); tfLastName.setText(lastName); tfFirstName.setText(firstName); tfDestination.setText(destination); } } if (ae.getActionCommand().equals("Обновить")) { if (tfCustID.getText().equals("")) System.out.println("please enter a CustID"); else { updateDB(); } } }

Изменение данных в таблице public String updateDB() { try { connectToDB(); lastName = tfLastName.getText(); firstName = tfFirstName.getText(); destination = tfDestination.getText(); String updateString; updateString = "Update Data " + "SET lastName = '" + lastName + "' " + "WHERE CustID = " + custID; st1.executeUpdate(updateString); updateString = "Update Data " + "SET firstName = '" + firstName + "' " + "WHERE CustID = " + custID; st1.executeUpdate(updateString); updateString = "Update Data " + "SET destination = '" + destination + "' " + "WHERE CustID = " + custID; st1.executeUpdate(updateString); return "Successful Update"; } catch (Exception e) { System.out.println("Exception was thrown: " + e.getMessage()); return "UnSuccessful Retrieval"; } finally { try { if (st1 != null) st1.close(); if (dbConn != null) dbConn.close(); } catch (SQLException sqle) { System.out.println("SQLException during close(): " + sqle.getMessage()); } }

Изменение данных в таблице public String retrieveFromDB() { try { connectToDB(); String getString = "SELECT * FROM Data " + "WHERE CustID = " + custID; ResultSet results = st1.executeQuery(getString); lastName = "record not found"; firstName = ""; destination = ""; while (results.next()) { lastName = results.getString("lastName"); firstName = results.getString("firstName"); destination = results.getString("destination"); } return "Successful Retrieval"; } catch (Exception e) { System.out.println("Exception was thrown: " + e.getMessage()); return "UnSuccessful Retrieval"; } finally { try { if (st1 != null) st1.close(); if (dbConn != null) dbConn.close(); } catch (SQLException sqle) { System.out.println("SQLException during close(): " + sqle.getMessage()); } } }

Изменение данных в таблице private void connectToDB() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String sourceURL = "jdbc:odbc:Data"; dbConn = DriverManager.getConnection(sourceURL); st1 = dbConn.createStatement(); } catch (Exception e) { System.out.println("Exception was thrown: " + e.getMessage()); } public static void main(String[] args) { TestTableAlteration tta = new TestTableAlteration(); }