Programowanie w języku Java WYKŁAD

Wielkość: px
Rozpocząć pokaz od strony:

Download "Programowanie w języku Java WYKŁAD"

Transkrypt

1 Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational pzabawa@pk.edu.pl www:

2 WYKŁAD 8 Trwałość w Java cz. 1 Wykład w zakresie JDBC został w znacznej mierze oparty o źródła, których autorem jest Jakob Jenkov dr inż. Piotr Zabawa Instytut Informatyki Wydział Fizyki, Matematyki i Informatyki

3 Trwałość w Java Zakład Inżynierii Oprogramowania Celem wykładów poświęconych trwałości w Java nie jest wprowadzenie w zagadnienia relacyjnych baz danych ani w język SQL. Te zagadnienia zostaną opanowane przez studentów w ramach przedmiotów poświęconych bazom danych. Wykład został podzielony na dwie części: JDBC standard wymagający znajomości SQL JPA standard pozwalający uniknąć znajomości SQL Pierwsza część może okazać się przydatna osobom pragnącym tą drogą poznać SQL. Druga część pozwala uniknąć znajomości SQL osobom, które przywiązują większą wagę do tworzonego przez nich oprogramowania niż do samej kwestii składowania danych.

4 Trwałość w Java Zakład Inżynierii Oprogramowania Wprawdzie relacyjne bazy danych są relatywnie starą technologią, to jednak nadal dominują na rynku. Było wiele prób zastąpienia ich kolejno przez obiektowe, obiektowo-relacyjne, XML owe, a obecnie przez NoSQL owe bazy danych. Ale jak dotąd, żadna z propozycji nie odniosła sukcesu. Dlatego właśnie dominują obecnie relacyjne bazy danych.

5 Trwałość w Java Zakład Inżynierii Oprogramowania W ramach języka Java trwałość można zapewnić na wiele sposobów: Wprost w Java SE JDBC (Java Database Connectivity) odpowiednik ODBC Z wykorzystaniem frameworków JPA2 (Java Persistence API) standard wykorzystany np. w Hibernate EclipseLink TopLink EJB3 (Enterprise Java Beans) framework wspierający m.in. trwałość Spring Data (Spring Data JPA, Spring Data JDBC Extensions) Seam

6 Trwałość w Java Zakład Inżynierii Oprogramowania Java posiada wsparcie do obsługi trwałości nie tylko w zakresie relacyjnych baz danych, lecz również NoSQL owych baz danych zyskujących stopniowo na znaczeniu. Dobrym narzędziem jest projekt Spring Data zawierający szereg podprojektów dedykowanych do różnych rodzajów baz danych i wprowadzających ujednolicenie do wszystkich podejść za pomocą podprojektu Spring Data Commons. Jednak na zajęciach skoncentrujemy się jedynie na zagadnieniu mapowania obiektowo-relacyjnego, czyli ORM (Object-Relational Mapping), a więc na dostępie do relacyjnych baz danych.

7 Trwałość w Java Zakład Inżynierii Oprogramowania Interesować nas będą jedynie dwa z wymienionych wyżej podejść: JDBC niskopoziomowe działanie bliskie SQL, ale za to znaczna kontrola nad implementacją warstwy trwałości JPA2/Hibernate programowanie wysokopoziomowe z możliwością niskopoziomowej optymalizacji, narzędzia forward- i reverseengineering, XML ze strukturą bazy danych Warto mieć na uwadze, że frameworki wprowadzają swoje wysokopoziomowe języki zapytań, zwane ogólnie EL (Expression Languages). Są też dodatkowe języki związane z przeprowadzaniem operacji na relacyjnych bazach danych, np. DDL (Data Definition Language) wykorzystywany m.in. z poziomu narzędzi modelowania w UML do generowania struktury bazy danych z modelu.

8 Trwałość w Java Zakład Inżynierii Oprogramowania Dawniej wykorzystywany był cały szereg rozwiązań wspierających dostęp do relacyjnych baz danych, jednak z czasem rozwiązania o mniejszym znaczeniu zostały zapomniane lub wchłonięte przez inne rozwiązania. Dobrym przykładem jest standard JPA, który scalił ze sobą rozwiązania takie jak EJB 2 CMP, JDO (nie odniósł sukcesu wśród dostawców frameworków Java EE, ale trafił do standardu), Hibernate oraz TopLink API. Należy również mieć na względzie, że dostępne frameworki nie są tylko implementacją standardów. Dany framework na ogół: Stanowi realizację dużej części, ale nie całości standardu Proponuje własne rozwiązania wykraczające poza standard, a pozwalające na konkurowanie z innymi implementacjami standardu.

9 Trwałość w Java Zakład Inżynierii Oprogramowania Znaczenie wzorców korporacyjnych w dostępie do danych. Istotną rolę odgrywają następujące architektoniczne wzorce korporacyjne: DAO (Data Access Object) DTO (Data Transfer Object) Active Record Broker SDO = JDO + DTO (Service Data Object = Java Data Object + Data Transfer Object)

10 Trwałość w Java Zakład Inżynierii Oprogramowania Wartym zainteresowania w kontekście trwałości jest wzorzec architektoniczny DAO (Data Access Object), który zostanie również omówiony ze względu na jego duże znaczenie praktyczne. Wzorzec ten wprowadza dodatkową warstwę (dlatego jest architektoniczny a nie projektowy) do systemu softwerowego. Rzutuje to wprawdzie negatywnie na efektywność operacji na danych, ale nie zawsze ona jest najważniejsza. Wzorzec ten uniezależnia dodatkowo warstwę logiki biznesowej od warstwy danych, co ułatwia wprowadzanie zmian.

11 Trwałość w Java Zakład Inżynierii Oprogramowania Trudno jednoznacznie przesądzić które z podejść (ORM lub JDBC) jest lepsze. Są zwolennicy jednego lub drugiego, zwolennicy poszczególnych standardów lub narzędzi. Są również tacy, którzy nie wierzą w ORM a nawet w obiektowość i preferują JDBC. Są też tacy, którzy za jedyną słuszną drogę uważają obiektowe bazy danych. Wydaje się jednak, że właściwym podejściem jest stosowanie takiego podejścia, które odpowiada danej osobie. Większym problemem jest dokonanie wyboru dla przedsiębiorstwa wytwarzającego oprogramowanie. Jednak na pewno warto przekonać się o zaletach zarówno jednego jak i drugiego podejścia. W przeciwnym razie trudno podjąć odpowiednią decyzję. Dalej podane zostały argumenty za używaniem (lub nieużywaniem) JPA i ORM.

12 JDBC

13 JDBC API jest interfejsem programowym zapewniającym dostęp do relacyjnej bazy danych z poziomu języka Java w sposób niemal niezależny od serwera bazy danych. Stanowi więc mechanizm abstrakcji, którego realizacją są konkretne serwery bazodanowe. Standaryzuje ono następujące operacje: Nawiązanie połączenia z bazą danych Wykonanie zapytań na bazie danych Nawigację po wynikach zapytania Modyfikowanie danych w bazie Standaryzacji nie podlega jednak sam język zapytań SQL jest on różny dla różnych serwerów baz danych.

14 JDBC zapewnia dostęp niskopoziomowy do bazy danych umożliwiając programiście posługiwanie się językiem zapytań SQL. Język ten zaliczany jest do paradygmatów deklaratywnych oprogramowania. Jego wyrażenia określają cel a nie sposób dojścia do niego. Poszczególni dostawcy serwerów bazodanowych konkurują między sobą m.in. zapewniając zróżnicowane wersje języka SQL. Zatem wykorzystanie standardu JDBC pozwala skorzystać programiście Java w pełni z oferty producentów tych serwerów. Jednak niskopoziomowe operacje mogą być niewygodne w użyciu. Dlatego w kolejnym wykładzie zostaną zaprezentowane inne rozwiązania.

15 Pakiety standardowej biblioteki Java zawierające JDBC: java.sql javax.sql

16 Struktura JDBC API: Sterowniki JDBC (JDBC Drivers) Połączenia (Connections) Stwierdzenia (Statements) Zbiory wyników (Result Sets) Podstawowe scenariusze użycia JDBC API: Zapytania kierowane do bazy danych (odczyt danych) Zapytania do bazy danych o meta-dane Update bazy danych Wykonywanie transakcji

17 JDBC Drivers Zadaniem tych elementów standardu JDBC jest implementacja interfejsów JDBC. Implementacja ta zależy od serwera bazy danych. Jednak interfejsy są od niego niezależne. Można więc podmienić sterownik (podmienić serwer bazy danych) nie zmieniając kodu aplikacji w sytuacji idealnej, ze względu na różnice w funkcjonalności i w SQL.

18 Connections Po zainicjowaniu drivera umożliwiają one nawiązanie jednego lub więcej połączeń z bazą danych poprzez serwer bazodanowy. Całą komunikacja aplikacji w Java z bazą danych przebiega wyłącznie poprzez Connections.

19 Statements Stwierdzenia służą do wykonywania zapytań o dane i wprowadzania zmian do danych w bazie. Istnieje kilka różnych stwierdzeń pozwalających na wykonywanie różnych zapytań.

20 Result Sets W wyniku wykonania zapytania można uzyskać jego wynik w postaci ResultSet. Klasa ta umożliwia nawigowanie po jej obiektach w celu uzyskania wyników zapytania z poziomu języka Java, a więc w sposób obiektowy.

21 Podstawowe scenariusze Zapytania kierowane do bazy danych noszą one nazwę zapytań (query) i polegają wyłącznie na odczycie danych z bazy. Są najczęściej używanymi operacjami. Zapytania do bazy danych o meta-dane polegają na uzyskaniu od bazy danych informacji o jej strukturze (tabelach, kolumnach, typach danych, relacjach); są relacyjno-bazo-danowym odpowiednikiem klasowoobiektowego mechanizmu refleksji dostępnego w Java Update bazy danych operacje te polegają na zapisie do bazy danych; zapis może dotyczyć wstawiania nowych rekordów lub modyfikowania istniejących Wykonywanie transakcji polega na łącznym wykonywaniu wielu operacji na bazie danych z jednoczesną gwarancją wykonania ich wszystkich (sukces) lub niewykonania żadnej z nich (porażka)

22 źródło: Jakob Jenkov

23 Typy sterowników JDBC JDBC-ODBC bridge driver wsparcie usunięte w Java 8! Java + Native code driver All Java + Middleware translation driver All Java driver jest to jedyny obecnie wspierany typ sterownika. Łączy aplikację bezpośrednio z bazą danych i jest specyficzny dla poszczególnych serwerów. Jest też najbardziej efektywnym (performance) rodzajem sterownika. źródło: Jakob Jenkov

24 Dalej zostały omówione typowe kroki spotykane w aplikacjach wykorzystujących JDBC.

25 Załadowanie sterownika (od Java 6 automatycznie!) Należy je wykonać raz. Przykładowy kod: Class.forName("com.mysql.jdbc.Driver"); Korzystamy z mechanizmu refleksji ładując poprzez standardowego class loader a klasę sterownika określoną przez nazwę. Klasa ta zależy od serwera bazy danych. Powyższy przykład ładuje sterownik JDBC serwera MySQL.

26 Otwarcie połączenia z bazą danych Wykorzystujemy klasę java.sql.drivermanager. Przykład dla MySQL: String url = "jdbc:mysql://[host]:[port]/db_name"; String user = uname"; String password = passwd"; Connection connection = DriverManager.getConnection(url, user, password); [host] - jeśli pominięty, to localhost [port] - domyślny port dla serwera MySQL, to 3306

27 Jawne zamknięcie połączenia Jeśli nie zamierzamy już korzystać z danego połączenia z bazą danych, to powinniśmy je zamknąć w celu zwolnienia zasobów. Możemy to wykonać za pomocą metody: connection.close();

28 Zapytania o dane (odczyt) Jeśli mamy otwarte połączenie z bazą danych możemy skierować do niej zapytanie w następujący sposób: Statement statement = connection.createstatement(); String sql = "select * from people"; ResultSet result = statement.executequery(sql); Wyniki zapytania zostają umieszczone w klasie ResultSet, którą możemy iterować wierszami (rekordami): while(result.next()) { } String name = result.getstring("name"); long age = result.getlong ("age");

29 Dla danego wiersza można uzyskać dostęp do danych w kolumnie za pomocą jednej z metod: getx() gdzie: X klasa wrapera typu prostego Dostęp do poszczególnych kolumn tabeli może być za pomocą nazwy kolumny lub indeksu kolumny, co pokazano poniżej.

30 getstring(<column_name>); getlong(<column_name>); getint(<column_name>); getdouble(<column_name>); getbigdecimal(<column_name>); getstring(<column_index>); getlong(<column_index>); getint(<column_index>); getdouble(<column_index>); getbigdecimal(<column_index>);

31 Indeks kolumny w ramach ResultSet można uzyskać po nazwie za pomocą wywołania następującej metody: int columnindex = result.findcolumn("columnname"); Dostęp za pomocą indeksu jest szybszy. Po skorzystaniu z wyników zapytania należy zwolnić zasoby: result.close(); statement.close(); Można wywołania te umieścić w bloku finally.

32 try(statement statement = connection.createstatement()) { String sql = "select * from people"; try(resultset result = statement.executequery(sql)) { ResultSet result = statement.executequery(sql); while(result.next()) { String name = result.getstring("name"); long age = result.getlong("age"); System.out.println(name); System.out.println(age); } } }

33 Zapis do bazy Są dwa rodzaje zapisów: Aktualizacja rekordu Usunięcie rekordu Do wykonania obu rodzajów zapisu wykorzystywana jest metoda: executeupdate()

34 Zmiana rekordów Statement statement = connection.createstatement(); String sql = "update people set name='john' where id=123"; int rowsaffected = statement.executeupdate(sql); Metoda executeupdate() zwraca informację o ilości zmienionych rekordów.

35 Usunięcie rekordów Statement statement = connection.createstatement(); String sql = "delete from people where id=123"; int rowsaffected = statement.executeupdate(sql); Metoda executeupdate() zwraca informację o ilości zmienionych rekordów.

36 ResultSet Klasa ResultSet zawiera wynik zapytania. Można go sobie wyobrazić jako tabelę z rekordami w wierszach i polami rekordów w kolumnach. Należy pamiętać, że komórki tabeli mogą zawierać dane, a niektóre wartość null reprezentująca brak danych (nie wszystkie pola w tabeli relacyjnej bazy danych są wymagane). Należy mieć na uwadze fakt, że nie można uzyskać w sposób bezpośredni informacji o ilości wierszy w ResultSet. Są dwa sposoby utworzenia obiektu tej klasy: Przez wykonanie zapytania (Statement) Przez wykonanie przygotowanego zapytania (PreparedStatement)

37 Wykonanie Statement: Statement statement = connection.createstatement(); ResultSet result = statement.executequery("select * from people"); Wykonanie PreparedStatement: String sql = "select * from people"; PreparedStatement statement = connection.preparestatement(sql); ResultSet result = statement.executequery();

38 W czasie tworzenia stwierdzenia możemy sterować następującymi parametrami tworzonego przez niego obiektu klasy ResultSet: Type Concurrency Holdability Statement statement = connection.createstatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_OVER_COMMIT ); PreparedStatement statement = connection.preparestatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_OVER_COMMIT );

39 Typy ResultSet ResultSet.TYPE_FORWARD_ONLY Oznacza, że nie jest możliwe iterowanie w przeciwnym kierunku niż od pierwszego do ostatniego rekordu. Jest domyślny. ResultSet.TYPE_SCROLL_INSENSITIVE Można iterować w dowolnym kierunku i przeskakiwać do dowolnego rekordu, ale zmiana danych w bazie danych nie zostanie odzwierciedlona w obiekcie klasy ResultSet po jego utworzeniu. ResultSet.TYPE_SCROLL_SENSITIVE Można iterować w dowolnym kierunku i przeskakiwać do dowolnego rekordu. Zmiana danych w bazie danych zostanie odzwierciedlona w obiekcie klasy ResultSet po jego utworzeniu.

40 Metody nawigacji Zakład Inżynierii Oprogramowania Dostępność poniżej przedstawionych metod zależy od serwera bazy danych, sterownika JDBC oraz typu ResultSet. Metoda absolute() afterlast() beforefirst() first() last() next() previous() Opis Ustawia kursor we wskazanej pozycji względem początkowego rekordu Ustawia kursor na końcu (poza zakresem) Ustawia kursor na początku (poza zakresem) Ustawia kursor na pierwszy rekord Ustawia kursor na ostatni rekord Przesuwa kursor do następnej pozycji Przesuwa kursor do poprzedniej pozycji relative() Przesuwa kursor z aktualnej pozycji o wskazaną ilość rekordów (+/-)

41 Metody uzyskiwania informacji o aktualnej pozycji kursora Metoda getrow() gettype() isafterlast() isbeforefirst() isfirst() Opis Zwraca numer wiersza dla aktualnej pozycji kursora Zwraca informację o typie ResultSet Zwraca true jeśli kursor wyszedł poza ostatni rekord Zwraca true jeśli kursor jest przed pierwszym rekordem Zwraca true jeśli kursor wskazuje na pierwszy rekord

42 Metoda odświeżająca aktualny wiersz w ResultSet, jeśli ResultSet jest typu ResultSet.TYPE_SCROLL_SENSITIVE Metoda refreshrow() Opis Aktualizuje wartości pól rekordu w ResultSet na podstawie aktualnych wartości rekordu w bazie danych

43 Współbieżność ResultSet Dostępne są dwa poziomy współbieżności: ResultSet.CONCUR_READ_ONLY ResultSet.CONCUR_UPDATABLE Jeśli ResultSet jest określony jako, to można dokonać aktualizacji poszczególnych pól danego rekordu za pomocą metod updatex() analogicznych do getx(). Do pól można odwoływać się po nazwie lub po indeksie kolumny. Należy pamiętać o wywołaniu metody result.updaterow() dla całego rekordu po aktualizacji jego pól. Metoda ta dokonuje aktualizacji danych w bazie pod warunkiem, że nie została wywołana wewnątrz transakcji. Przykłady metod updatex() podano poniżej.

44 updatestring(<column_name>); updatelong(<column_name>); updateint(<column_name>); updatedouble(<column_name>); updatebigdecimal(<column_name>); updatestring(<column_index>); updatelong(<column_index>); updateint(<column_index>); updatedouble(<column_index>); updatebigdecimal(<column_index>);

45 Wstawianie wierszy do ResultSet Aby wstawić wiersz do ResultSet należy wykonać następujące kroki: Wywołać ResultSet.moveToInsertRow() Zaktualizować wartości kolumn w tym wierszu Wywołać ResultSet.insertRow()

46 ResultSet Holdability Cecha ta określa czy po dokonaniu commitu obiektu ResultSet do bazy danych następuje destrukcja obiektu ResultSet czy nie. Dostępność tej funkcjonalności dla danego sterownika można sprawdzić wywołaniem metody: DatabaseMetaData.supportsResultSetHoldability(int holdability) Rodzaje holdability: ResultSet.CLOSE_CURSORS_OVER_COMMIT ResultSet.HOLD_CURSORS_OVER_COMMIT

47 PreparedStatement Powody stosowania: Łatwość wprowadzania parametrów do zapytania SQL Łatwość ponownego użycia z nowymi parametrami Możliwość zwiększenia wydajności wykonywanych komend Ułatwienie wykonywania batch updates.

48 Przykład: String sql = "update people set firstname=?, lastname=? where id=?"; PreparedStatement preparedstatement = connection.preparestatement(sql); preparedstatement.setstring(1, "Gary"); preparedstatement.setstring(2, "Larson"); preparedstatement.setlong (3, 123); int rowsaffected = preparedstatement.executeupdate();

49 Zwiększenie efektywności zapytań: Poprzez cache owanie zapytań po stronie sterownika Poprzez współdzielenie zapytań pomiędzy aplikacjami Java Poprzez cache owanie zapytań po stronie serwera bazy danych zwiększenie wydajności poprzez minimalizację analizy planu wykonania zapytań

50 Batch Updates Ten tryb pracy z bazą danych polega na przesyłaniu do niej wielu komend za jednym razem. Nie ma sensu stosowanie go dla zapytań (odczytu), lecz jedynie dla zapisu. Można wykonywać takie update y za pomocą: Statement PreparedStatement

51 Statement Statement statement = null; try{ statement = connection.createstatement(); statement.addbatch("update people set firstname='john' where id=123"); statement.addbatch("update people set firstname='eric' where id=456"); statement.addbatch("update people set firstname='may' where id=789"); int[] recordsaffected = statement.executebatch(); } finally { if(statement!= null) statement.close(); }

52 PreparedStetment String sql = "update people set firstname=?, lastname=? where id=?"; PreparedStatement preparedstatement = null; try{ preparedstatement = connection.preparestatement(sql); preparedstatement.setstring(1, "Gary"); preparedstatement.setstring(2, "Larson"); preparedstatement.setlong (3, 123); preparedstatement.addbatch(); preparedstatement.setstring(1, "Stan"); preparedstatement.setstring(2, "Lee"); preparedstatement.setlong (3, 456); preparedstatement.addbatch(); int[] affectedrecords = preparedstatement.executebatch(); } finally { if(preparedstatement!= null) preparedstatement.close(); }

53 Ryzyko stosowania batch updates polega na tym, że część komend może się udać, a część nie i wtedy nie wiadomo jak postąpić w kodzie. Dlatego dobrą praktyką wykonywania batch updates jest wykonywanie ich w ramach transakcji.

54 Transakcje Służą określeniu, który zestaw operacji ma być traktowany łącznie jako operacja atomowa. Jeśli wszystkie operacje składowe zakończą się sukcesem, to zestaw operacji zostanie wykonany w całości. Jeśli któraś z operacji składowych nie powiedzie się, to nie zostanie wykonana żadna z operacji.

55 Przykład transakcji Connection connection =... try { connection.setautocommit(false); // create and execute statements etc. connection.commit(); } catch(exception e) { connection.rollback(); } finally { if(connection!= null) connection.close(); }

56 Procedury składowane Jest to rozwiązanie dostępne po stronie bazy danych. Służy do przechowywania procedur zawierających komendy w celu zwiększenia wydajności. Utworzenie komendy: CallableStatement callablestatement = connection.preparecall("{call calculatestatistics(?,?)}"); albo CallableStatement callablestatement = connection.preparecall("{call calculatestatistics(?,?)}", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_OVER_COMMIT );

57 Java 7 Dodano instrukcję try-with-resources w celu zautomatyzowania zamykania zasobów znanego z wykładu dotyczącego wyjątków przykład z zamykaniem strumieni. Połączenie z bazą danych traktowane jest jako zasób. Przykład na następnym slajdzie Dodano interfejs RowSetFactory i klasę RowSetProvider pozwalające na uzyskanie każdego z rodzajów RowSet dostępnych dla danego JDBC Driver, a więc uwzględniających specyfikę serwera bazy danych. Przykład na kolejnym slajdzie

58 Przykład: public static void samplequeryproc(connection samplecon) throws SQLException { String samplequery = "select ROLLNO, NAME, ADDRESS from STUDENT"; try (Statement samplestmt = samplecon.createstatement()) { ResultSet sampleresultset = samplestmt.executequery(samplequery); while (rs.next()) { int rollno = sampleresultset.getint("rollno"); } } } String studentname = sampleresultset.getstring("name"); String studentaddress = sampleresultset.getstring("address"); System.out.println( ROLLNO: + rollno + " NAME: " + studentname + " ADDRESS: " + studentaddress);

59 public void samplemethod(string sampleusername, String samplepassword) throws SQLException { } RowSetFactory samplerowsetfactory = null; JdbcRowSet samplerowset = null; try { samplerowsetfactory = RowSetProvider.newFactory(); samplerowset = samplerowsetfactory.createjdbcrowset(); samplerowset.seturl("jdbc:sampledriver:sampleattribute"); samplerowset.setusername(sampleusername); samplerowset.setpassword(samplepassword); samplerowset.setcommand(""select ROLLNO, NAME, ADDRESS from STUDENT"); samplerowset.execute(); } catch(exception e) { }

60 Parametry wyjściowe z procedury składowanej Procedura składowana może zwracać wartości. Przykład korzystania z parametrów wyjściowych procedury składowanej podano na następnym slajdzie.

61 CallableStatement callablestatement = connection.preparecall("{call calculatestatistics(?,?)}"); callablestatement.setstring(1, "param1"); callablestatement.setint (2, 123); callablestatement.registeroutparameter(1, java.sql.types.varchar); callablestatement.registeroutparameter(2, java.sql.types.integer); ResultSet result = callablestatement.executequery(); // najpierw ResultSet while(result.next()) {... } // potem OUT parameters String out1 = callablestatement.getstring(1); int out2 = callablestatement.getint (2);

62 Należy najpierw analizować ResultSet, a dopiero potem parametry wyjściowe dobra praktyka związana z kompatybilnością z różnymi serwerami bazodanowymi.

63 DatabaseMetaData Metody z tej grupy służą uzyskaniu ogólnych informacji o bazie danych. Uzyskanie obiektu meta-danych: DatabaseMetaData databasemetadata = connection.getmetadata(); Uzyskanie danych o serwerze bazodanowym: int majorversion = databasemetadata.getdatabasemajorversion(); int minorversion = databasemetadata.getdatabaseminorversion(); String productname = databasemetadata.getdatabaseproductname(); String productversion = databasemetadata.getdatabaseproductversion(); Uzyskanie danych o sterowniku: int drivermajorversion = databasemetadata.getdrivermajorversion(); int driverminorversion = databasemetadata.getdriverminorversion();

64 Wylistowanie tabel: String catalog = null; String schemapattern = null; String tablenamepattern = null; String[] types = null; ResultSet result = databasemetadata.gettables( catalog, schemapattern, tablenamepattern, types ); while(result.next()) { String tablename = result.getstring(3); } Wylistowanie kolumn w tabeli: String catalog = null; String schemapattern = null; String tablenamepattern = "my_table"; String columnnamepattern = null; ResultSet result = databasemetadata.getcolumns( catalog, schemapattern, tablenamepattern, columnnamepattern); while(result.next()){ String columnname = result.getstring(4); int columntype = result.getint(5); }

65 Uzyskanie informacji o kluczu prywatnym tabeli String catalog = null; String schema = null; String tablename = "my_table"; ResultSet result = databasemetadata.getprimarykeys( catalog, schema, tablename); while(result.next()) String columnname = result.getstring(4); Dla kluczy złożonych zwrócony ResultSet może mieć wiele wierszy.

66 Sprawdzanie jakie funkcjonalności są wspierane przez dany sterownik databasemetadata.supportsgetgeneratedkeys(); databasemetadata.supportsgroupby(); databasemetadata.supportsouterjoins();

67 Ustawianie wartości parametrów wywołania metody składowanej: callablestatement.setstring(1, "param1"); callablestatement.setint (2, 123); Wykonanie metody składowanej: ResultSet result = callablestatement.executequery(); albo callablestatement.executeupdate();

68 Trwałość w Java 10 dobrych praktyk JDBC Stosować PreparedStatement Stosować ConnectionPool Wyłączać tryb auto commit Stosować JDBC Batch Update W dostępie do ResultSet stosować nazwy kolumn aby uniknąć wyjątku invalidcolumindexerror Stosować zmienne Bind zamiast konkatenacji String ów Zawsze zamykać Statement, PreparedStatement i Connection Wybierać odpowiedni sterownik JDBC dla tworzonej aplikacji Stosować standardowe zapytania i unikać stosowania wyrażeń specyficznych dla serwera bazy danych o ile to możliwe Stosować właściwą metodę getxxx()

69 Koniec dr inż. Piotr Zabawa Instytut Informatyki Wydział Fizyki, Matematyki i Informatyki

Metody dostępu do danych

Metody dostępu do danych Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie wykładów dra inż. Juliusza Mikody Metody dostępu do danych JDBC - Java Database Connectivity JDO - Java Data Object ORM - Object-Relational

Bardziej szczegółowo

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java Informatyka I Standard JDBC Programowanie aplikacji bazodanowych w języku Java dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Standard JDBC Java DataBase Connectivity uniwersalny

Bardziej szczegółowo

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008 JDBC w LoXiMie Interfejs Java Database Connectivity dla systemu LoXiM Adam Michalik 2008 Sterownik JDBC co to jest? Sterownik JDBC to zbiór klas implementujących interfejsy opisane w specyfikacji JDBC

Bardziej szczegółowo

JAVA I BAZY DANYCH. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html

JAVA I BAZY DANYCH. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html JAVA I BAZY DANYCH ZAGADNIENIA: wprowadzenie; JDBC; komunikacja z bazą danych; HSQLDB. MATERIAŁY: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK

Bardziej szczegółowo

Podejście obiektowe do relacyjnych baz danych Hibernate.

Podejście obiektowe do relacyjnych baz danych Hibernate. Podejście obiektowe do relacyjnych baz danych Hibernate. Plan wykładu Czym jest Hibernate? Jakie są zalety pracy z Hibernate? Jak skonfigurować Hibernate? Jak korzystać z Hibernate? Praktyczne przykłady

Bardziej szczegółowo

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. Informatyka I Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 Standard JDBC Java DataBase Connectivity

Bardziej szczegółowo

Połączenie z bazą danych

Połączenie z bazą danych Połączenie z bazą danych ODBC i JDBC - przykłady w języku Java Standard ODBC Stworzony przez Microsoft Dostępny w Windows (są także bibliotek Linux'owe) Pozwala na dostęp do źródeł danych Programowanie

Bardziej szczegółowo

JDBC (Java Database Connectivity vit )

JDBC (Java Database Connectivity vit ) 1 JDBC (Java Database Connectivity) Marek Wojciechowski Czym jest JDBC? 2 JDBC jest standardowym interfejsem do współpracy aplikacji Java z relacyjną bazą danych JDBC definiuje standardowe interfejsy interfejsy

Bardziej szczegółowo

Programowanie w języku Java WYKŁAD

Programowanie w języku Java WYKŁAD Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 26.05.2014 WYKŁAD 13 Refleksja Data Access Object

Bardziej szczegółowo

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych Zadanie do wykonania na następny tydzień: Przedstawić aplikację napisaną w JSP realizującą analogiczne zadania jak pierwsza aplikacja

Bardziej szczegółowo

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate Wirtualne przedsiębiorstwo II Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate Łukasz Macierzyński 157588 Daniel Nikończuk 157621 Kacper Oko 157626 Agenda 1. Co to jest mapowanie obiektowo-relacyjne

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 13 Marcin Młotkowski 27 maja 2015 Plan wykładu Trwałość obiektów 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 2 / 29 Trwałość (persistence) Definicja Cecha

Bardziej szczegółowo

Programowanie komputerów. Wykład 10: Dostęp do baz danych z poziomu aplikacji Java. (JDBC Database Access)

Programowanie komputerów. Wykład 10: Dostęp do baz danych z poziomu aplikacji Java. (JDBC Database Access) Programowanie komputerów Wykład 10: Dostęp do baz danych z poziomu aplikacji Java (JDBC Database Access) Relacyjne bazy danych Baza danych to zbiór danych powiązanych ze sobą pewnymi relacjami. System

Bardziej szczegółowo

Bazy danych wykład dwunasty

Bazy danych wykład dwunasty Bazy danych wykład dwunasty Interfejs do połaczeń z baza danych Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa danych 1 / 29 Zajmiemy się mechanizmami pozwalajacymi połaczyć się

Bardziej szczegółowo

JAVA bazy danych. na bazie: Język Java - Podstawy Programowania - Jacek Rumiński

JAVA bazy danych. na bazie: Język Java - Podstawy Programowania - Jacek Rumiński JAVA bazy danych na bazie: Język Java - Podstawy Programowania - Jacek Rumiński Plan wykładu Sposoby połączenia z bazą danych Sterowniki JDBC Połączenie z bazą danych poprzez JDBC Język SQL (Structured

Bardziej szczegółowo

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 Utrwalanie danych zastosowanie obiektowego modelu danych warstwy biznesowej do generowania schematu relacyjnej bazy danych Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 1. Relacyjne

Bardziej szczegółowo

Podstawy programowania III WYKŁAD 2

Podstawy programowania III WYKŁAD 2 Podstawy programowania III WYKŁAD 2 Jan Kazimirski 1 Komunikacja z bazami danych 2 PHP i bazy danych PHP zapewnia dostęp do wielu popularnych baz danych. Kilka poziomów abstrakcji: Funkcje obsługujące

Bardziej szczegółowo

Java Persistence API - zagadnienia zaawansowane

Java Persistence API - zagadnienia zaawansowane Program szkolenia: Java Persistence API - zagadnienia zaawansowane Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Java Persistence API - zagadnienia zaawansowane Java-EE-jpa-pro

Bardziej szczegółowo

Wzorce logiki dziedziny

Wzorce logiki dziedziny Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),

Bardziej szczegółowo

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz Projektowanie oprogramowania Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz 1 Wykonanie czterowarstwowej aplikacji EE z dostępem do bazy danych,

Bardziej szczegółowo

JDBC - Obsługa baz danych w języku Java

JDBC - Obsługa baz danych w języku Java JDBC - Obsługa baz danych w języku Java JDBC (Java Database Conectiviti) jest interfejsem pozwalającym połączyć aplikację Javy z zewnętrzną bazą danych za pomocą odpowiednich sterowników. Dużą zaletą JDBC

Bardziej szczegółowo

Podstawy otwartych języków programowania Java Database Connectivity (JDBC)

Podstawy otwartych języków programowania Java Database Connectivity (JDBC) Podstawy otwartych języków programowania Java Database Connectivity (JDBC) Wiktor Wandachowicz Treść wykładu Przypomnienie terminów bazodanowych Architektura JDBC Schemat działania przy dostępie do danych

Bardziej szczegółowo

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

PHP: bazy danych, SQL, AJAX i JSON

PHP: bazy danych, SQL, AJAX i JSON 1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji

Bardziej szczegółowo

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski Aplikacje bazodanowe dr inż. Arkadiusz Mirakowski Plan prezentacji interfejs ODBC interfejs JDBC rodzaje sterowników JDBC niezbędne biblioteki interfejsu JDBC instalacja i konfiguracja sterownika JDBC

Bardziej szczegółowo

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł mysqli ma dwa interfejsy: proceduralny i obiektowy) PostgreSQL Oracle MS

Bardziej szczegółowo

Plan wykładu. Dostęp do bazy danych. Architektura JDBC. Dostęp do baz danych z aplikacji Java EE

Plan wykładu. Dostęp do bazy danych. Architektura JDBC. Dostęp do baz danych z aplikacji Java EE 1 Plan wykładu 2 Dostęp do bazy danych Dostęp do baz danych w aplikacjach Java EE JDBC Źródła danych część I: JDBC i źródła danych Dostęp do baz danych z aplikacji Java EE Architektura JDBC Programowane

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -

Bardziej szczegółowo

Programowanie w języku Java. Bazy danych SQLite w Javie

Programowanie w języku Java. Bazy danych SQLite w Javie Programowanie w języku Java Bazy danych SQLite w Javie Co to jest SQLite SQLite to bezserwerowa, nie wymagająca konfiguracji relacyjna baza danych. Znajduje szerokie zastosowanie np.. w systemie android

Bardziej szczegółowo

Database Connectivity

Database Connectivity Oprogramowanie Systemów Pomiarowych 15.01.2009 Database Connectivity Dr inŝ. Sebastian Budzan Zakład Pomiarów i Systemów Sterowania Tematyka Podstawy baz danych, Komunikacja, pojęcia: API, ODBC, DSN, Połączenie

Bardziej szczegółowo

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2 PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

Systemy GIS Tworzenie zapytań w bazach danych Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE

Bardziej szczegółowo

Typy sterowników. Rozdział 21 JDBC. Podstawowe kroki aplikacji. Historia. Program napisany w języku Java JDBC API. Menadżer sterowników JDBC

Typy sterowników. Rozdział 21 JDBC. Podstawowe kroki aplikacji. Historia. Program napisany w języku Java JDBC API. Menadżer sterowników JDBC Typy sterowników Program napisany w języku Java Rozdział JDBC JDBC API Menadżer sterowników JDBC Typ Typ Typ Typ Wprowadzanie do JDBC, kursory zwykłe, kursory przewijane, obsługa błędów, przetwarzanie

Bardziej szczegółowo

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Wprowadzenie do JDBC z wykorzystaniem bazy H2 Wprowadzenie do JDBC z wykorzystaniem bazy H2 JDBC (ang. Java DataBase Connectivity). Biblioteka stanowiąca interfejs umożliwiający aplikacjom napisanym w języku Java porozumiewać się z bazami danych za

Bardziej szczegółowo

JDBC. Plan ćwiczenia. Wywoływanie poleceń SQL z języków programowania. Plan ćwiczenia cd. Wprowadzenie do laboratorium

JDBC. Plan ćwiczenia. Wywoływanie poleceń SQL z języków programowania. Plan ćwiczenia cd. Wprowadzenie do laboratorium Bazy Danych JDBC Wywoływanie poleceń SQL z języków programowania. Plan ćwiczenia Wprowadzenie do laboratorium. Nawiązywanie i zamykanie połączeń. Wykonywanie zapytań. Wykonywanie aktualizacji. Zarządzanie

Bardziej szczegółowo

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie 1 czerwca 2009 Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie = bjects = database for objects w pełni obiektowa

Bardziej szczegółowo

Rozdział 9 Obsługa baz danych w języku Java

Rozdział 9 Obsługa baz danych w języku Java Rozdział 9 Obsługa baz danych w języku Java 9.1 Obsługa baz danych w Javie - pakiet SQL 9.2 Utworzenie połączenia z bazą danych 9.3 Sterowniki 9.4 Wysłanie polecenia SQL 9.5 Rezultaty i ich przetwarzanie

Bardziej szczegółowo

Technologia informacyjna

Technologia informacyjna Technologia informacyjna Bazy danych Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2016 Plan wykładu Wstęp do baz danych Modele baz danych Relacyjne bazy danych Język SQL Rodzaje

Bardziej szczegółowo

METODY PROGRAMOWANIA

METODY PROGRAMOWANIA METODY PROGRAMOWANIA Wzorzec Repository 21 października 2017 Krzysztof Pawłowski kpawlowski@pjwstk.edu.pl Każdy wzorzec opisuje problem, który ciągle pojawia się w naszej dziedzinie, a następnie określa

Bardziej szczegółowo

4 Web Forms i ASP.NET...149 Web Forms...150 Programowanie Web Forms...150 Możliwości Web Forms...151 Przetwarzanie Web Forms...152

4 Web Forms i ASP.NET...149 Web Forms...150 Programowanie Web Forms...150 Możliwości Web Forms...151 Przetwarzanie Web Forms...152 Wstęp...xv 1 Rozpoczynamy...1 Co to jest ASP.NET?...3 W jaki sposób ASP.NET pasuje do.net Framework...4 Co to jest.net Framework?...4 Czym są Active Server Pages (ASP)?...5 Ustawienia dla ASP.NET...7 Systemy

Bardziej szczegółowo

Wzorce dystrybucji i wspólbieżności autonomicznej

Wzorce dystrybucji i wspólbieżności autonomicznej Wzorce dystrybucji i wspólbieżności autonomicznej 1. Wzorce dystrybucji, fasada zdalna (Remote Facade), obiekt transfery danych (Data Transfer Object), 2. Wzorce współbieżności autonomicznej, blokada optymistyczna

Bardziej szczegółowo

akademia androida Składowanie danych część VI

akademia androida Składowanie danych część VI akademia androida Składowanie danych część VI agenda 1. SharedPreferences. 2. Pamięć wewnętrzna i karta SD. 3. Pliki w katalogach /res/raw i /res/xml. 4. Baza danych SQLite. 5. Zadanie. 1. SharedPreferences.

Bardziej szczegółowo

Projektowanie aplikacji z bazami danych

Projektowanie aplikacji z bazami danych Systemy mapowania relacyjno-obiektowego Instytut Informatyki Uniwersytet Wrocławski Plan wykładu Wprowadzenie do trwałości Niedopasowanie paradygmatów Architektura warstwowa Czym jest ORM? Problemy i pytania

Bardziej szczegółowo

Aplikacje Internetowe, Servlety, JSP i JDBC

Aplikacje Internetowe, Servlety, JSP i JDBC Aplikacje Internetowe, Servlety, JSP i JDBC Opis Java 2 Enterprise Edition (JEE) jest potężną platformą do tworzenia aplikacji webowych. PLatforma JEE oferuje wszystkie zalety tworzenia w Javie plus wszechstronny

Bardziej szczegółowo

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016

Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016 Projektowanie obiektowe oprogramowania Wzorce architektury aplikacji (3) Wykład 11 Repository, Unit of Work Wiktor Zychla 2016 Repository dodatkowa warstwa abstrakcji na obiektową warstwę dostępu do danych.

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA

Bazy danych tworzenie aplikacji bazodanowych ORM / JPA Bazy danych tworzenie aplikacji bazodanowych ORM / JPA ORM (Object Relationa Mapping)/ORB (Object Relational Broker) to nazwa mechanizmu tłumaczenia obiektowej postaci danych wykorzystywanej w aplikacjach

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Spis treści. Przedmowa

Spis treści. Przedmowa Spis treści Przedmowa V 1 SQL - podstawowe konstrukcje 1 Streszczenie 1 1.1 Bazy danych 1 1.2 Relacyjny model danych 2 1.3 Historia języka SQL 5 1.4 Definiowanie danych 7 1.5 Wprowadzanie zmian w tabelach

Bardziej szczegółowo

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie

Bardziej szczegółowo

PL/SQL. Zaawansowane tematy PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL PL/SQL Zaawansowane tematy PL/SQL Cele Poznanie złożonych i referencyjnych typów danych Poznanie konstrukcji kursora Poznanie kodu składowanego Poznanie procedur i funkcji 2 Złożone typy danych RECORD

Bardziej szczegółowo

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1 Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych

Bardziej szczegółowo

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2 Kod szkolenia: Tytuł szkolenia: EJB Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2 Dni: 3 Opis: Adresaci szkolenia: Szkolenie adresowane jest

Bardziej szczegółowo

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu: http://aragorn.pb.bialystok.pl/~gkret

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu: http://aragorn.pb.bialystok.pl/~gkret Ogólny plan przedmiotu BAZY DANYCH Wykład 1: Wprowadzenie do baz danych Małgorzata Krętowska Politechnika Białostocka Wydział Informatyki Wykład : Wprowadzenie do baz danych Normalizacja Diagramy związków

Bardziej szczegółowo

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. Warstwa integracji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Ukrycie logiki dostępu do danych w osobnej warstwie 2. Oddzielenie mechanizmów trwałości od modelu obiektowego Pięciowarstwowy

Bardziej szczegółowo

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP).

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP). Procedury składowane c.d. Parametry tablicowe w Transact-SQL. W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP). Zadanie 1. Proszę napisad procedurę składowaną, która

Bardziej szczegółowo

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. 77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele

Bardziej szczegółowo

Kurs programowania aplikacji bazodanowych

Kurs programowania aplikacji bazodanowych Wykład 1 Instytut Informatyki Uniwersytet Wrocławski Plan wykładu Architektury aplikacji Architektura aplikacji Jednowarstwowa Dwuwarstowa Rozproszona (JDBC) Wprowadzenie Architektura JDBC Sterowniki,

Bardziej szczegółowo

Programowanie w języku Java WYKŁAD

Programowanie w języku Java WYKŁAD Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 28.04.2014 WYKŁAD 9 Trwałość w Java cz. 2 wykład

Bardziej szczegółowo

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Laboratorium nr 4. Temat: SQL część II. Polecenia DML Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze

Bardziej szczegółowo

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż. Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej Wstęp Programowanie w Javie 2 mgr inż. Michał Misiak Agenda Założenia do wykładu Zasady zaliczeń Ramowy program wykładu

Bardziej szczegółowo

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC 1 Katedra Optoelektroniki i Systemów Elektronicznych 2 Oprogramowanie Systemów Elektronicznych Zagadnienia: Temat wykładu 1. Interfejs ODBC 2. 3. 3 Interfejs ODBC 4 Interfejs ODBC ODBC (Open DataBase Connectivity)

Bardziej szczegółowo

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika Programowanie w SQL procedury i funkcje UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika 1. Funkcje o wartościach skalarnych ang. scalar valued

Bardziej szczegółowo

Paweł Rajba

Paweł Rajba Paweł Rajba pawel@cs.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Używanie kursorów Rodzaje kursorów Praca z kursorami Co to jest kursor? Cykl życia kursora utworzenie pobieranie wartości ewentualnie

Bardziej szczegółowo

JAVA PERSISTENCE API CZĘŚĆ 2 ASPEKTY ZAAWANSOWANE. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

JAVA PERSISTENCE API CZĘŚĆ 2 ASPEKTY ZAAWANSOWANE. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska JAVA PERSISTENCE API CZĘŚĆ 2 Waldemar Korłub ASPEKTY ZAAWANSOWANE Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska JPA w aplikacji Java EE Połączeniem z bazą danych zarządza serwer aplikacji

Bardziej szczegółowo

Tworzenie aplikacji bazodanowych

Tworzenie aplikacji bazodanowych Wydział Informatyki Politechnika Białostocka Studia stacjonarne Tworzenie aplikacji bazodanowych Prowadzący: pokój: E-mail: WWW: Małgorzata Krętowska, Agnieszka Oniśko 206 (Małgorzata Krętowska), 207 (Agnieszka

Bardziej szczegółowo

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych http://www.mini.pw.edu.pl/~lucknerm Utworzenie tabeli w Oracle Utworzenie użytkownika Utworzenie połączenia w NetBeans Utworzenie

Bardziej szczegółowo

Łączenie z bazą danych przykładowa klasa infpolaczenie import java.sql.drivermanager; import java.sql.connection; import java.sql.

Łączenie z bazą danych przykładowa klasa infpolaczenie import java.sql.drivermanager; import java.sql.connection; import java.sql. Łączenie z bazą danych przykładowa klasa infpolaczenie import java.sql.drivermanager; import java.sql.connection; import java.sql.sqlexception; public class infpolaczenie { public static void main(string[]

Bardziej szczegółowo

Kurs programowania aplikacji bazodanowych

Kurs programowania aplikacji bazodanowych Wykład 2 Instytut Informatyki Uniwersytet Wrocławski Plan wykładu Połączenie za pomocą JNDI i DataSource Połączenie za pomocą JNDI i DataSource Krótki wstęp do usług katalogowych Dotychczas w celu uzyskania

Bardziej szczegółowo

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Kursory w SQL Serverze Wprowadzenie Modele kursorów Używanie kursorów Rodzaje kursorów Praca

Bardziej szczegółowo

Programowanie w języku Java

Programowanie w języku Java Programowanie w języku Java Wykład 4: Programowanie rozproszone: TCP/IP, URL. Programowanie sieciowe w Javie proste programowanie sieciowe (java.net) na poziomie UDP na poziomie IP na poziomie URL JDBC

Bardziej szczegółowo

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15 T-SQL dla każdego / Alison Balter. Gliwice, cop. 2016 Spis treści O autorce 11 Dedykacja 12 Podziękowania 12 Wstęp 15 Godzina 1. Bazy danych podstawowe informacje 17 Czym jest baza danych? 17 Czym jest

Bardziej szczegółowo

Oracle11g: Wprowadzenie do SQL

Oracle11g: Wprowadzenie do SQL Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom

Bardziej szczegółowo

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie

Bardziej szczegółowo

Bazy danych 2. Wykład 1

Bazy danych 2. Wykład 1 Bazy danych 2 Wykład 1 Sprawy organizacyjne Materiały i listy zadań zamieszczane będą na stronie www.math.uni.opole.pl/~ajasi E-mail: standardowy ajasi@math.uni.opole.pl Sprawy organizacyjne Program wykładu

Bardziej szczegółowo

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1 Szkolenie wycofane z oferty Program szkolenia: Enterprise Java Beans 3.0/3.1 Informacje: Nazwa: Enterprise Java Beans 3.0/3.1 Kod: Java-EE-EJB Kategoria: Java EE Grupa docelowa: developerzy Czas trwania:

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?

Bardziej szczegółowo

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie

Bardziej szczegółowo

Protokół JDBC współpraca z relacyjnymi bazami danych lab3

Protokół JDBC współpraca z relacyjnymi bazami danych lab3 Protokół JDBC współpraca z relacyjnymi bazami danych lab3 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych JPA, lab3 Zofia Kruczkiewicz 1 Zadanie1 Połączenie z bazą danych Sample systemu

Bardziej szczegółowo

QUERY język zapytań do tworzenia raportów w AS/400

QUERY język zapytań do tworzenia raportów w AS/400 QUERY język zapytań do tworzenia raportów w AS/400 Dariusz Bober Katedra Informatyki Politechniki Lubelskiej Streszczenie: W artykule przedstawiony został język QUERY, standardowe narzędzie pracy administratora

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 13 Marcin Młotkowski 24 maja 2018 Plan wykładu 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 509 / 553 Plan wykładu Trwałość obiektów 1 Trwałość obiektów

Bardziej szczegółowo

Bazy Danych i Systemy informacyjne Wykład 5. Piotr Syga

Bazy Danych i Systemy informacyjne Wykład 5. Piotr Syga Bazy Danych i Systemy informacyjne Wykład 5 Piotr Syga 13.11.2017 PREPARE przypomnienie Przygotowanie zapytania dynamicznego Wcześniejszy przykład SET @kol = "kolor"; SET @str = CONCAT("SELECT ", @kol,

Bardziej szczegółowo

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski Technologie dla aplikacji klasy enterprise Wprowadzenie Marek Wojciechowski Co oznacza enterprise-ready? Bezpieczeństwo Skalowalność Stabilność Kompatybilność wstecz Wsparcie Dokumentacja Łatwość integracji

Bardziej szczegółowo

Java Database Connectivity

Java Database Connectivity Java Database Connectivity Celem ćwiczenia jest zbudowanie kilku prostych serwletów z użyciem technologii JDBC. Podczas ćwiczenia zbudowane zostaną serwlety ilustrujące podstawowe techniki łączenia się

Bardziej szczegółowo

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się. Za operacje na bazie odpowiada biblioteka mysqli (i jak improved). Posiada ona interfejs obiektowy jak i proceduralny. Podłączenie do bazy (obiektowo) mysqli:: construct() ([ string $host [, string $username

Bardziej szczegółowo

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX Aktualizowanie dokumentów XML ( Oracle ) do aktualizowania zawartości dokumentów XML służy między innymi funkcja updatexml. wynikiem jej działania jest oryginalny dokument ze zmodyfikowanym fragmentem,

Bardziej szczegółowo

Relacyjne bazy danych a XML

Relacyjne bazy danych a XML Relacyjne bazy danych a XML Anna Pankowska aniap@amu.edu.pl Internet, SQLiXMLwbiznesie Internet nieoceniony sposób komunikacji z klientami, pracownikami i partnerami handlowymi przyspiesza transakcje finansowe

Bardziej szczegółowo

Connection con = DriverManager.getConnection(dbUrl, username, passwd);

Connection con = DriverManager.getConnection(dbUrl, username, passwd); Laboratorium 8 Wstęp Dostęp do bazy danych: 1. Załadowanie sterownika (drivera) do pamięci np. Class.forName("org.apache.derby.jdbc.ClientDriver"); 2. Podłączenie się do bazy (klasa Connection) Connection

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL Wprowadzenie do SQL SQL - Structured Query Language -strukturalny język zapytań Światowy standard przeznaczony do definiowania, operowania i sterowania danymi w relacyjnych bazach danych Powstał w firmie

Bardziej szczegółowo

Oracle10g: Programowanie w PL/SQL

Oracle10g: Programowanie w PL/SQL Oracle10g: Programowanie w PL/SQL OPIS: Szkolenie dotyczy użytkowników Oracle8i, Oracle9i i Oracle10g. Ten kurs pozwala zrozumieć zalety tego potężnego narzędzia programowania do PL/SQL. Studenci uczą

Bardziej szczegółowo

Mechanika i Budowa Maszyn II stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny)

Mechanika i Budowa Maszyn II stopień (I stopień / II stopień) ogólnoakademicki (ogólno akademicki / praktyczny) Załącznik nr 7 do Zarządzenia Rektora nr 10/12 z dnia 21 lutego 2012r. KARTA MODUŁU / KARTA PRZEDMIOTU Kod modułu Nazwa modułu Nazwa modułu w języku angielskim Obowiązuje od roku akademickiego 2013/2014

Bardziej szczegółowo

SYSTEM MONITORINGU PARAMETRÓW WĘZŁÓW PRZECHOWYWANIA DANYCH DLA PROJEKTU KRAJOWY MAGAZYN DANYCH PODRĘCZNIK DEWELOPERA

SYSTEM MONITORINGU PARAMETRÓW WĘZŁÓW PRZECHOWYWANIA DANYCH DLA PROJEKTU KRAJOWY MAGAZYN DANYCH PODRĘCZNIK DEWELOPERA SYSTEM MONITORINGU PARAMETRÓW WĘZŁÓW PRZECHOWYWANIA DANYCH DLA PROJEKTU KRAJOWY MAGAZYN DANYCH PODRĘCZNIK DEWELOPERA 1 Spis treści: Wstęp... 3 Opis architektury systemu... 4 Architektura modułu KMD...

Bardziej szczegółowo

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych. Dr inż. Paweł Kasprowski Plan wykładu Bazy danych Architektura systemów zarządzania bazami danych Realizacja zapytań algebra relacji Wielodostęp do danych - transakcje Dr inż. Paweł Kasprowski pawel@kasprowski.pl Aplkacja przechowująca

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej   Wydział Mechaniczny Technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Laboratorium 1 Wprowadzenie, podstawowe informacje o obsłudze

Bardziej szczegółowo

Projektowanie systemów baz danych

Projektowanie systemów baz danych Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do

Bardziej szczegółowo