Java i bazy danych Programowanie z wykorzystaniem JDBC mgr inż. Piotr Kopniak.

Slides:



Advertisements
Podobne prezentacje
Programowanie sieciowe w Javie
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Java dla studentów II roku Wydziału Fizyki PW Przemysław Duda, 2012
Skrypty, procedury przechowywane i wyzwalane
SQL INJECTION Wykorzystanie błędów w językach skryptowych
XML + relacyjne bazy danych
18/11/ Języki programowania 1 Piotr Górczyński Biblioteki.
PHP + MySQL część II.
Relacyjne Bazy Danych wykład XIII
Implementacja ekstensji klasy
Autor Roman Jędras Prowadzący: dr inż. Antoni Izworski Przedmiot:
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
MS Access 2000 Tworzenie bazy danych Piotr Górczyński 2005.
20/09/ Języki programowania 1 Piotr Górczyński Kreator form.
18/11/ Języki programowania 1 Piotr Górczyński Łączenie z bazą danych.
Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej JDBC Database Access Wykład 12 mgr inż. Michał Misiak.
RMI I RMI-IIOP Wprowadzenie Co to jest RMI?
Metody autoryzacji użytkowników wymaga integracji z systemem operacyjnym nie wymaga logowania mała pewność mechanizmu wymaga logowania duża pewność mechanizmu.
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Zaawansowane technologie Javy Wykład 3 (21 lutego 2012) JDBC – programowanie bazodanowe (2)
Wykład 8 Wojciech Pieprzyca
Wykład 5 Wojciech Pieprzyca
Programowanie wizualne PW – LAB5 Wojciech Pieprzyca.
Wzorce projektowe w J2EE
Rozproszone bazy danych
Modele baz danych - spojrzenie na poziom fizyczny
Projektowanie warstwy serwera Wprowadzenie. Projektowanie warstwy serwera Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu.
Technologia.Net Bazy danych. Technologia ADO.Net Służy do dostarczania danych z rożnych źródeł (baz danych) do aplikacji Jest produktem Microsoft Umożliwia.
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
USŁUGA FTP 1. Definicja FTP. FTP (File Transfer Protocol, ang. protokół transmisji plików) jest protokołem typu klient-serwer, który umożliwia przesyłanie.
Terminy bazodanowe Tabela (relacja) Wiersz (krotka, rekord)
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
MySQL – ODBC - ACCESS.
Konfiguracja kont w programie Adobe Dreamweaver
Transakcje zarządzane kontenerem
Sterownik JDBC i obsługa relacyjnych baz danych w Javie
Java 3 MPDI Programowanie obiektowe W7. import java.io.*; public class X { // kontrukcja throws – określenie jakie wyjątki może dana metoda // sygnalizować
dr hab. Ryszard Walkowiak prof. nadzw.
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
ASP BAZY. 2.2 S. Wolek Wst. do Inf. Połączenie z bazą danych przez ADO (ActiveX Data Object) do: - źródła ODBC - bazy z podanie nazwy sterownika ODBC.
SQL - Structured Query Language
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje bazodanowe ADO.NET PHP i MySQL
Wybrane zagadnienia relacyjnych baz danych
18/11/ Języki programowania 1 Piotr Górczyński Kontrolki.
ASP BAZY DANYCH. 2 S. Wolek Wst. do Inf. Połączenie z bazą danych przez ADO (ActiveX Data Object) do: - źródła ODBC - bazy z podanie nazwy sterownika.
Zpiratował Rafał Kaczyński. Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. Hibernate pozwala na.
Bazy danych Microsoft access 2007.
Programowanie sieciowe w Javie
PL/SQL – dalsza wędrówka
Autor: Damian Urbańczyk
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Slajd 1© J.Rumiński Jacek Rumiński  Bazy danych Kontakt: Katedra Inżynierii Biomedycznej, pk. 106, tel.: , fax: ,
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
Informatyka Stosowana – ROK II / III
Połączenie JSP z MS SQL Server 2000 Łukasz Sak Tomasz Raciborski.
.NET i Bazy Danych Projekt: Wadim Grasza.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
BAZY DANYCH Microsoft Access Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i.
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Zaawansowane technologie Javy Wykład 7 (6 kwietnia 2017)
Strukturalny język zapytań SQL - historia
Programowanie obiektowe – zastosowanie języka Java SE
Aplikacje i usługi internetowe
Technologie Informacyjne Bazy danych
Programowanie w Javie 1 Dr Robert Kowalczyk
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Java i bazy danych Programowanie z wykorzystaniem JDBC mgr inż. Piotr Kopniak

Omawiane zagadnienia Wstęp do technologii baz danych Sposoby połączenia z bazą danych Sterowniki JDBC Połączenie z bazą danych poprzez JDBC Język SQL (Structured Query Language) Praca z bazą danych poprzez JDBC Jak stworzyć prostą aplikację pracującą z bazą danych w Javie

Bazy danych I Baza danych - zbiór danych zorganizowany logicznie w postaci tabel. Każda tabela składa się z kolumn różnych typów wierszy (krotek, rekordów). System zarządzania bazą danych (w skrócie SZBD lub DBMS) - oprogramowanie zarządzające danymi zarządzające fizycznie danymi w bazie danych. Warstwa dająca użytkownikowi (programiście) możliwość logicznego manipulowania danymi.

Bazy danych II Relacyjna baza danych - zbiór danych powiązanych ze sobą relacjami zapewniającymi spójność danych. Relacja jest to związek dwóch rekordów w tej samej tabeli lub różnych tabelach powiązanych logicznie, np. jeden wiersz z tabeli Faktura związany jest z kilkoma wierszami z tabeli Pozycje faktur. Obiektowa baza danych - baza przechowująca obiekty, tzn. nie tylko dane ale także funkcje na nich operujące, czyli obiekt. Fizyczna budowa - plik lub zbiór plików na jednym lub wielu woluminach. Plik może zawierać całą bazę danych lub odpowiadać jednej tabeli. Baza posiada także pliki specjalnego przeznaczenia, np. pliki przechowujące indeksy i pliki logowania transakcji.

Połaczenie z bazą danych Aplikacja klienta - program z którego korzysta użytkownik. Dostarcza interfejs do wprowadzania i prezentacji danych. Sterownik - program tłumaczący instrukcje wstawiania i pobierania danych np.. w języku SQL na wywołania funkcji API SZBD SZBD - program zarządzający fizycznymi danymi zgromadzonymi w bazie danych BD - baza danych lub zestaw rozproszony baz danych Aplikacja zdalna - aplikacja pracująca na serwerze WWW (wykonana jako servlet lub strona jsp) lub komponent umieszczony na serwerze aplikacji komunikujący się z bazą danych i przesyłający często dodatkowo przeliczone lub przefiltrowane dane do klienta BD SZB D Aplikacja klienta Stero wnik Sieć Stero wnik Aplikacja zdalna

Połaczenie z bazą danych w Javie Sterownik JDBC (Java Database Connectivity) - zestaw klas najczęściej w pliku *.jar dystrybuowany przez producentów SZBD lub firmy trzecie Servlet - aplikacja działająca w kontenerze serwera WWW np. Tomcat lub JServ. Po pierwszym odwołaniu utworzona instancja przechowuje informacje o swoim stanie i stanie połączeń sieciowych sesjach. Wielowątkowo obsługuje wielu użytkowników. JSP - dynamiczna strona internetowa, wymieszany kod HTML i Javy. W momencie pierwszego odwołania klienta jest kompilowana do servletu, który przejmuje obsługę żądania. BD SZBD Aplikacja, aplet, napisany w Javie Sterownik JDBC Sieć Aplikacja JSP lub Servlet ODBC Sterownik JDBC

Sterowniki JDBC Generacja 1 JDBC - ODBC Bridge Driver –ODBC (Open Dartabase Connectivity) –Sterownik korzystający z dostępnych sterowników ODBC - wymaga jego instalacji Generacja 2 Native - API Partly - Java Driver –sterownik napisany w języku JAVA –korzystający z funkcji napisanych w innych języka np.. w C Generacja 3 NET - Protocol All - Java Driver –sterownik korzystając z protokołów sieciowych i gniazd bezpośrednio łączy się z komponentem pośrednim na serwerze –nie wymaga dodatkowych instalacji –umożliwia korzystanie z różnorakich baz danych Generacja 4 Native - Protocol All - Java Driver –połączenie za pomocą sieci i gniazd z silnikiem bazy danych industry.java.sun.com/products/jdbc/drivers (obecnie 221)

Wybrane klasy i interfejsy JDBC I java.sql.Driver –interfejs odpowiedzialny za połączenie z bazą danych - tłumaczy zapytania SQL-a na instrukcje dla bazy danych java.sql.DriverManager –klasa zarządzająca listą dostępnych sterowników i udostępniająca wymagany sterownik dla aplikacji. Posiada m.in.. metody registerDriver(), deregisterDriver() java.sql.Connection –interfejs reprezentujący połączenie z bazą danych java.sql.Statement –interfejs reprezentujący zapytanie SQL-owe, które wysyłane jest w celu wykonania do bazy danych. Podstawowe metody ResultSet executeQuery(), int executeUpdate()

Wybrane klasy i interfejsy JDBC II java.sql.ResultSet –interfejs będący zbiorem rekordów zwróconych z bazy danych w wyniku wykonania zapytania, czyli jest taką wirtualną tabelą (tablicą w pamięci). Podstawowe metody: getXXX(), np. getString(), next(), previous() java.sql.RowSet –Rozszerza ResultSet o możliwości JavaBeans (właściwości, odbiorcy zdarzeń) – łatwiejsza praca na danych (przewijanie wyników, modyfikacje danych) od JDK 1.4 – s.pdf java.sql.SQLException –klasa umożliwiająca dostęp do informacji o błędzie bazy danych (zgodnie z XOPEN SQL)

Połączenie poprzez most JDBC:ODBC Rejestracja źródła ODBC do bazy Access I 1. Utworzenie bazy danych w Accessie i zapis do pliku *.mdb (należy zapamiętać ścieżkę) 2. Rejestracja źródła ODBC. –W panelu sterowania wybieramy program 32bit ODBC lub uruchamiamy bezpośrednio program odbcad32.exe z katalogu Windows/System32. –Na zakładce źródła systemowe lub użytkownika wybieramy Dodaj i tworzymy nowe źródło. Podajemy jego nazwę (którą musimy zapamiętać), wybieramy odpowiedni sterownik do bazy danych z listy oraz wskazujemy plik bazy danych.

Połączenie poprzez most JDBC:ODBC Rejestracja źródła ODBC do bazy Access II

Połączenie do bazy danych poprzez JDBC I URL bazy danych URL (Uniform Resource Locator) bazy danych –Konstrukcja adresu: jdbc: : –Różne dla różnych producentów jdbc:odbc:baza – most jdbc-odbc (baza – nazwa źródła ODBC) jdbc:msql://db_serwer:port/baza – baza MSQL jdbc:mysql://[host:port],[host:port].../ [database][?propertyName1][=propertyValu e1][&propertyName2][=propertyValue2]... - baza MySQL jdbc:oracle:thin:dbhost:1234:baza – baza Oracle

Połączenie do bazy danych poprzez JDBC II Klasy sterownika Instalacja sterownika – mysql-connector-java-[version]-bin.jar Ustawienie zmiennej systemowej CLASSPATH – $ setenv CLASSPATH /path/to/mysql- connector-java-[version]- bin.jar:$CLASSPATH UNIX – C:\> set CLASSPATH=\path\to\mysql- connector-java-[version]- bin.jar;%CLASSPATH% WINDOWS Załadowanie sterownika w programie – Class.forName(com.mysql.jdbc.Driver); – Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);

Przykład połączenia do bazy poprzez JDBC I ( import java.sql.*; public class myConnection { public static void main( String[] args ) { try { // Using Sybase jConnect 4.2 Class.forName("com.sybase.jdbc.SybDriver"); // Using Sybase jConnect 5.2 //Class.forName("com.sybase.jdbc2.jdbc.SybDriver"); Connection conn = DriverManager.getConnection("jdbc:sybase:Tds:testmachine -pc:2638", "dba", "sql");

Przykład połączenia do bazy poprzez JDBC II Statement stmt = conn.createStatement( ); ResultSet rs = stmt.executeQuery( "SELECT * FROM EMPLOYEE"); while ( rs.next( ) ) { System.out.println( rs.getInt( 1 ) ); } } catch ( Exception e ) { System.out.println( "An exception occurred." ); } } // end of main } // end of MyConnection class

SQL (Structured Query Language) SELECT - instrukcja pobrania danych z bazy, np.. Select * from studenci Select Nazwisko, Imie, Sum(nieobecnosc), Avg(ocena) from studenci s, obecnosci ob, oceny oc where ob.id_student=s.id_student and oc.id_student=s.id_student and s.nazwisko like No% and ob.nieobecnosc>2 or (oc.cwiczenia=java and oc.ocena>2) INSERT - instrukcja wstawiania do bazy danych, np.. Insert into oceny (id, cwiczenia, ocena) values (1, java, 5.0) UPDATE - instrukcja modyfikacji danych, np.. update studenci set ocena_java = 5.0 update obecnosci set obecnosc=usprawiedliwiona where data between and

Praca z bazą danych poprzez JDBC I Pobieranie danych Statement stmt = conn.createStatement( ); ResultSet rs = statement.exequteQuery(Select * from studenci); while ( rs.next( ) ) { System.out.println( rs.getString( 1 ) ); } Modyfikacja danych int ile_zmodyfikowano = statement.exequteUpdate( Insert into oceny (id, cwiczenia, ocena) values (1, java, 5.0)); int ile_zmodyfikowano = statement.exequteUpdate(update studenci set ocena_java = 5.0);

Praca z bazą danych poprzez JDBC II Obsługa transakcji –Włączenie własnej obsługi transakcji: connection.setAutocommit(false); –Zatwierdzenie transakcji: connection.commit(); –Cofniecie zmian: connection.rollback(); Rodzaje ResultSet –Domyślnie – przesuwany w dół, do odczytu stm = con.createStatement(); –Przewijany w obie strony, nie reagującu na zmiany w bazie, z mozliwością modyfikacji danych stm = con.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); Modyfikacja danych poprzez ResultSet –UPDATE rs.first();rs.updateString(Miasto, Lublin); –DELETE rs.absolute(100);rs.deleteRow(); –INSERT rs.moveToInsertRow(); rs.update...;rs.insertRow();

Praca z bazą danych poprzez JDBC III Zapytania z parametrem – Prepared Statements PreparedStatement pstm = conn.prepareStatement(UPDATE STUDENT SET OCENA=? WHERE OBEC_NA_WYKL>?); pstm.setString(1, bdb); pstm.setInt(10); stm.execute(); Wywoływanie procedur składowanych – Callable Statements CallableStatement cstm = conn.prepareCall({?=call best_transaction(?,?)}); cstm.registerOutParameter(1,java.sql.Types.INTEGER); cstm.setDate(2,data_od); cstm.setDate(3,data_do); cstm.execute();

Praca z bazą danych poprzez JDBC IV Metadane –ResultSetMetaData: getColumnCount(), getColumnLabel(), isCaseSensitive(), itd. –DatabaseMetaData: getTables(), getPrimaryKeys(), getUserName(), itd. Więcej o JDBC – /basics/index.html – /distributed/