Programowanie Obiektowe Java

Podobne dokumenty
Programowanie Obiektowe Java

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Programowanie Obiektowe Java

Język SQL, zajęcia nr 1

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

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

Wykład 5. SQL praca z tabelami 2

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

git krótki przewodnik

Projektowanie systemów baz danych

Relacyjne bazy danych. Podstawy SQL

Bazy Danych i Usługi Sieciowe

Bazy danych. Polecenia SQL

Bazy danych i usługi sieciowe

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

JAVA I BAZY DANYCH. MATERIAŁY:

Relacyjne bazy danych. Podstawy SQL

Adam Wójs <adam[shift+2]wojs.pl> git --wprowadzenie

Ref. 7 - Język SQL - polecenia DDL i DML

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

SQL (ang. Structured Query Language)

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

Bazy danych. Dr inż. Paweł Kasprowski

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Wprowadzenie do baz danych

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

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

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

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Wykład 05 Bazy danych

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Kurs. Podstawy MySQL

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

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

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Bazy danych - wykład wstępny

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy danych 7. SQL podstawy

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

2017/2018 WGGiOS AGH. LibreOffice Base

Systemy GIS Tworzenie zapytań w bazach danych

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Wprowadzenie do Doctrine ORM

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Database Connectivity

Baza danych sql. 1. Wprowadzenie

Wykład 5: PHP: praca z bazą danych MySQL

Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Komunikacja z bazą danych psql

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Bazy danych. dr inż. Arkadiusz Mirakowski

Podstawy technologii WWW

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

System kontroli wersji git

Programowanie I

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych

Podejście obiektowe do relacyjnych baz danych Hibernate.

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

Co zostanie wypisane na ekranie? (1)

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Metody dostępu do danych

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

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Uruchamianie bazy PostgreSQL

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Imię i Nazwisko Data Ocena. Laboratorium 7

P o d s t a w y j ę z y k a S Q L

Podstawowe informacje o bazach danych. Technologie Informacyjne

INTERNETOWY KURS PODSTAW IT

Wstęp do relacyjnych baz danych. Jan Bartoszek

15. Funkcje i procedury składowane PL/SQL

Pytania SO Oprogramowanie Biurowe. Pytania: Egzamin Zawodowy

Przestrzenne bazy danych Podstawy języka SQL

Wdrożenie modułu płatności eservice. dla systemu Magento

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Instalacja MySQL.

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

GIT. System Kontroli wersji GIT. Rafał Kalinowski

Struktura drzewa w MySQL. Michał Tyszczenko

Problemy techniczne SQL Server

SQL 4 Structured Query Lenguage

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Wykład 8. SQL praca z tabelami 5

Problemy techniczne SQL Server

Podstawowe wykorzystanie Hibernate

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

WPROWADZENIE DO BAZ DANYCH

2. Podstawy języka SQL

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

Transkrypt:

Programowanie Obiektowe Java Małgorzata Janik Zakład Fizyki Jądrowej malgorzata.janik@pw.edu.pl http://java.fizyka.pw.edu.pl/

Bazy danych DBMS H2 SQL JDBC 2/128

Bazy danych za: Wikipedia Baza danych = zbiór danych zapisanych zgodnie z określonymi regułami. W szerszym znaczeniu będzie obejmować np. księżkę telefoniczną. W węższym (dla nas interesującym) znaczeniu obejmuje dane cyfrowe gromadzone zgodnie z zasadami przyjętymi dla danego programu komputerowego specjalizowanego do gromadzenia i przetwarzania tych danych. Program taki nazywany jest systemem zarządzania bazą danych (ang. database management system, DBMS). 3/128

Bazy danych Rodzaje baz danych (wg. struktur organizacji danych) Bazy proste: kartotekowe hierarchiczne Bazy złożone: relacyjne obiektowe relacyjno-obiektowe strumieniowe temporalne nierelacyjne (NoSQL) 4/128

Bazy danych Rodzaje baz danych (wg. struktur organizacji danych) Bazy proste: kartotekowe hierarchiczne Bazy złożone: Najczęściej używane bazy danych: RELACYJNE relacyjne obiektowe relacyjno-obiektowe strumieniowe temporalne nierelacyjne (NoSQL) 5/128

Bazy danych Relacyjne bazy danych w modelu relacyjnym dane grupowane są w relacje, które reprezentowane są przez tablice 6/128

Bazy danych Relacyjne bazy danych https://pl.wikipedia.org/wiki/model_relacyjny#/ media/file:relational_model_concepts_pl.png 7/128

Bazy danych Relacyjne bazy danych w modelu relacyjnym dane grupowane są w relacje, które reprezentowane są przez tablice relacje są pewnym zbiorem rekordów o identycznej strukturze wewnętrznie powiązanych za pomocą związków zachodzących pomiędzy danymi związki pomiędzy relacjami zapewniają integralność referencyjną danych i pozwalają modelować odpowiednią logikę naszej struktury 8/128

Bazy danych Relacyjne bazy danych Więcej informacji: http://www.sqlpedia.pl/relacyjne-bazy-danych-pojecia-podstawowe/ związki pomiędzy relacjami zapewniają integralność referencyjną danych i pozwalają modelować odpowiednią logikę naszej struktury 9/128

Relacyjne bazy danych Najważniejsze w modelu relacyjnym dane grupowane są w relacje, które reprezentowane są przez tablice osoby Id imie 1 Małgorzata Janik 1887 2 Helena Nowak 1984 nazwisko data_urodzenia 10/128

Bazy danych System zarządzania bazą danych, (ang. Database Management System, DBMS) oprogramowanie bądź system informatyczny służący do zarządzania bazą danych (czyli zbiorem danych z określonymi regułami). System zarządzania bazą danych może być również serwerem bazy danych lub może udostępniać bazę danych lokalnie na określonym komputerze. 11/128

Bazy danych Photo by: Selmer van Alten Mamy np. wspomnianą książkę telefoniczną Chcemy ją zapisać w postaci cyfrowej Co robimy? 12/128

Bazy danych Co robimy? Photo by: Selmer van Alten Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Bazy proste: kartotekowe hierarchiczne Bazy złożone: relacyjne obiektowe relacyjno-obiektowe strumieniowe temporalne nierelacyjne (NoSQL) 13/128

Bazy danych Co robimy? Photo by: Selmer van Alten Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Łatwe, Łatwe, relacyjna. 14/128

Bazy danych Co robimy? Photo by: Selmer van Alten Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Łatwe, Łatwe, relacyjna. Ustalamy jakiego DBMS będziemy używać. 15/128

Bazy danych Co robimy? Photo by: Selmer van Alten Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Łatwe, Łatwe, relacyjna. Ustalamy jakiego DBMS będziemy używać. Łatwe, Popularne możliwości: https://db-engines.com/en/ranking 16/128

Bazy danych Co robimy? Photo by: Selmer van Alten Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Łatwe, Łatwe, relacyjna. Ustalamy jakiego DBMS będziemy używać. Łatwe, Popularne możliwości: https://db-engines.com/en/ranking Łatwe, Bądź inne, dopasowane do naszych potrzeb : na 345 możliwych Programowanie Obiektowe (Wykład) 17/128

Baza danych H2 18/128

Baza danych H2 Zalety: Mieści się w jednym pliku jar (w tym pliku mieści się serwer, a nie tylko klient). Dobry wybór do małych aplikacji (np. w Swingu) które chcą korzystać z funkcjonalności dostępu do bazy danych, a nie chcą zmuszać użytkownika do instalacji serwera. 19/128

Baza danych H2 http://www.h2database.com 20/128

Bazy danych Co robimy? Photo by: Selmer van Alten Ustalamy rodzaj bazy danych, w jakiej chcemy ją zapisać. Łatwe, Łatwe, relacyjna. Ustalamy jakiego DBMS będziemy używać. Łatwe, Np. H2. Tworzymy w DBMS wszystkie potrzebne tabele i wypełniamy je. Łatwe, Jak? Musimy się jakoś skomunikować z naszą bazą danych. Najbardziej popularnym językiem do komunikacji jest SQL. 21/128

Język SQL SQL, ang. Structured Query Language, jest językiem pozwalającym na modyfikację relacyjnych baz danych i umożliwia dostęp do nich. SQL został standardem American National Standards Institute (ANSI) w 1986, oraz International Organization for Standardization (ISO) w 1987. Mimo standardów, pomiędzy różnymi DBMS występują pewne różnice w użyciu SQL. Wszystkie bazy danych mają własne dialekty SQL, więc tekst zapytań będzie różnić się dla różnych baz danych. To powoduje, że bazy danych są bardzo słabo przenośne. Zawsze musimy pisać kod pod konkretny typ bazy danych. Podstawy SQL właściwie wszędzie są takie same. 22/128

Język SQL Język SQL pozwala na zarządzanie bazą danych, między innymi poprzez: - tworzenie nowych tabel - dodawanie danych do tabel - modyfikację danych zawartych w tabelach - modyfikację struktury tabel - usuwanie danych z tabel - oraz usuwanie całych tabel - pobieranie danych z tabel 23/128

Język SQL Podstawowe właściwości: - wielkość liter nie ma znaczenia - polecenia w językach baz danych nazywamy zapytaniami lub kwerendami (ang. query). dlatego SQL nazywany jest też językiem zapytań (ang. query language) - każde zapytanie kończy się średnikiem ( ; ) 24/128

Język SQL Przykładowy skrypt (przykłady zapytań) Usuń tabelę (jeśli istnieje) DROP TABLE IF EXISTS TEST; Stwórz nową tabelę z kolumnami ID i NAME CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255)); Dodaj nowy wiersz INSERT INTO TEST VALUES(1, 'Hello'); Dodaj kolejny wiersz INSERT INTO TEST VALUES(2, 'World'); Wypisz tabelę SELECT * FROM TEST ORDER BY ID; Zmień zawartość wiersza UPDATE TEST SET NAME='Hi' WHERE ID=1; Usuń wiersz DELETE FROM TEST WHERE ID=2; 25/128

Język SQL tworzenie przykładowej tabeli Tworzenie tabeli: CREATE TABLE Składnia: CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype,... ); Typ kolumny (przykłady): int date / datetime float varchar(255) 26/128

Język SQL tworzenie przykładowej tabeli Tworzenie tabeli: CREATE TABLE Przykład: CREATE TABLE pracownik ( int id, varchar(100) imie, varchar(100) nazwisko ); id imie nazwisko 1 Jan Kowalski 2 Zofia Kwiatkowska 27/128

Język SQL tworzenie przykładowej tabeli Tworzenie tabeli: CREATE TABLE Składnia: CREATE TABLE table_name ( column1 datatype not null, column2 datatype, column3 datatype,. PRIMARY KEY (column1) ); Klucz podstawowy (PRIMARY KEY): Tabelę należy tworzyć w ten sposób, by zawsze móc jednoznacznie odwołać się do każdego z rekordów. Klucz podstawowy określa taką jednoznaczną wartość (zestaw wartości) po którym możemy każdy wiersz rozróżnić. Każda tabela ma tylko jeden klucz, który nie może być NULL. 28/128

Język SQL tworzenie przykładowej tabeli Tworzenie tabeli: CREATE TABLE Składnia: CREATE TABLE table_name ( column1 datatype PRIMARY KEY, column2 datatype, column3 datatype,. ); Klucz podstawowy (PRIMARY KEY): Tabelę należy tworzyć w ten sposób, by zawsze móc jednoznacznie odwołać się do każdego z rekordów. Klucz podstawowy określa taką jednoznaczną wartość (zestaw wartości) po którym możemy każdy wiersz rozróżnić. Każda tabela ma tylko jeden klucz, który nie może być NULL. 29/128

Język SQL tworzenie przykładowej tabeli Tworzenie tabeli: CREATE TABLE Składnia: CREATE TABLE table_name ( int id not null auto_increment, column2 datatype, column3 datatype,. PRIMARY KEY (column1) ); Automatyczne przypisywanie: auto_increment pozwala na automatyczne wpisywanie pól typu id : pierwszą wartością będzie 1, każda następna będzie poprzednia+1 30/128

Język SQL tworzenie przykładowej tabeli Tworzenie tabeli: CREATE TABLE Składnia: CREATE TABLE table_name ( int id not null auto_increment, column2 datatype default wartość, column3 datatype,. PRIMARY KEY (column1) ); default Pozwala na ustawienie domyślnej wartości dla danej kolumny. Jeśli dodając nowy rekord nie ustalimy innej wartości, zostanie przypisana ta, którą określa default. 31/128

Język SQL tworzenie przykładowej tabeli Tworzenie tabeli: CREATE TABLE DROP TABLE IF EXISTS `waluty`; Jeśli już istnieje tabela o nazwie waluty to ją usuń. CREATE TABLE `waluty` ( `Id` int unsigned NOT NULL auto_increment, `data` date default GETDATE(), `USD` float default NULL, `EUR` float default NULL, `GBP` float default 0, PRIMARY KEY (`Id`) ) ; Stwórz tabelę waluty z następującymji kolumnami: Id, data, USD EUR, GBP 32/128

Język SQL tworzenie przykładowej tabeli Tworzenie tabeli: CREATE TABLE DROP Typ kolumny: TABLE int IF EXISTS date float `waluty`; CREATE TABLE `waluty` ( `Id` int unsigned NOT NULL auto_increment, `data` date default GETDATE(), `USD` float default NULL, getdate() `EUR` float default NULL, funkcja zwracająca `GBP` float default 0, obecną datę PRIMARY KEY (`Id`) ) ; Kluczem podstawowym jest automatycznie inkrementowane Id. 33/128

Język SQL tworzenie przykładowej tabeli waluty Id data 1 2018-04-02 4.1267 4.2232 6.7571 2 2018-04-03 4.1299 4.2797 6.776 USD EUR GPB 34/128

Język SQL tworzenie przykładowej tabeli osoby Id imie 1 Małgorzata Janik 1887 2 Helena Nowak 1984 nazwisko data_urodzenia 35/128

Język SQL tworzenie przykładowej tabeli osoby create table osoby + drop if exists Id imie 1 Małgorzata Janik 1887 2 Helena Nowak 1984 nazwisko data_urodzenia 36/128

Język SQL tworzenie przykładowej tabeli osoby create table osoby + drop if exists Id imie nazwisko data_urodzenia 1 Małgorzata Janik 1887 2 Helena Nowak 1984 Primary key NOT NULL auto_increment 37/128

Język SQL tworzenie przykładowej tabeli osoby create table osoby + drop if exists Id imie 1 Małgorzata Janik 1887 2 Helena Nowak 1984 Primary key NOT NULL auto_increment nazwisko data_urodzenia Id int unsigned Imie - varchar(20) Nazwisko - varchar(40) data_urodzenia - date 38/128

Język SQL tworzenie przykładowej tabeli osoby create table osoby + drop if exists Id imie nazwisko data_urodzenia 1 Małgorzata Janik 1887 2 Helena Nowak 1984 domyślnie NULL Primary key NOT NULL auto_increment Id int unsigned Imie - varchar(20) Nazwisko - varchar(40) data_urodzenia - date 39/128

Język SQL tworzenie przykładowej tabeli DROP TABLE IF EXISTS `Osoby`; CREATE TABLE `Osoby` ( `Id` int(6) unsigned NOT NULL auto_increment, `imie` varchar(20), `nazwisko` varchar(40), `data_urodzenia` date default NULL, PRIMARY KEY (`Id`) ) ; 40/128

Język SQL dodawanie danych Tworzenie tabeli: INSERT INTO Składnia: Jeśli pilnujemy kolejności kolumn: INSERT INTO table_name VALUES (value1, value2, value3,...); Niezależnie od kolejności: INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...); 41/128

Język SQL dodawanie danych INSERT INTO `waluty` VALUES (1, 2000-0103,4.1171,4.165,6.6576); INSERT INTO `waluty` (`Id`,`data`,`USD`,`EUR`,`GBP`) VALUES (2,'2000-01-04',4.1267,4.2232,6.7571); INSERT INTO `waluty` (`data`,`usd`,`eur`,`gbp`) VALUES ('2000-01-05',4.1299,4.2797,6.776); INSERT INTO waluty (data,usd) VALUES ('2000-0106,4.1129); Id data USD EUR GPB 1 2018-04-02 4.1267 4.2232 6.7571 2 2018-04-03 4.1299 4.2797 6.776 Pozostałe pola zostaną wypełnione automatycznie (auto_increment) bądź będą miały wartość NULL. 42/128

Język SQL komenda SELECT SELECT column1, column2,... FROM table_name [WHERE condition] [ORDER BY o_column] gdzie: column1, column2,... to nazwy kolumn, których zawartość ma być wyświetlona jako wynik zapytania table_name to nazwa tabeli, z której pobierane są dane condition to warunek jaki muszą spełniać wiersze tabeli, aby zostać wyświetlone o_column to kolumna, wg. której mają być posortowane wyniki zapytania 43/128

Język SQL komenda SELECT Chcąc pobrać wszystkie kolumny z tabeli zamiast wypisywać ich nazwy można użyć * (gwiazdka), np.. komenda: SELECT * FROM osoby; zwróci wszystkie kolumny z tabeli osoby. Parametry [WHERE condition] oraz [ORDER BY o_column] są opcjonalne. 44/128

Język SQL komenda SELECT Załóżmy, że tabela osoby zawiera trzy kolumny: imie, nazwisko oraz wiek. W takim przypadku komenda: SELECT imie FROM osoby WHERE wiek = 18; zwróci imiona osób, które mają 18 lat. SELECT nazwisko, imie FROM osoby ORDER BY wiek; zwróci nazwiska i imiona wszystkich osób z tabeli, posortowane według wieku. SELECT nazwisko, imie FROM osoby ORDER BY nazwisko DESC; zwróci nazwiska i imiona wszystkich osób z tabeli, posortowane alfabetycznie według nazwisk, w odwróconej kolejności od Z do A (modyfikator DESC sprawia, że kolejność sortowania jest odwócona) 45/128

Język SQL komenda SELECT W warunkach występujących po WHERE można stosować: operatory porównania =, >=, > itp. operatory logiczne AND i OR do porównywania łańcuchów można stosować polecenie LIKE akceptujące wzorce napisów, w których znak _ zastępuje dowolną literę, zaś znak % zastępuje dowolny ciąg znaków SELECT * FROM osoby WHERE nazwisko LIKE 'A%'; zwróci wszystkie dane osób, których nazwisko rozpoczyna się na literę A. W "warunkach" można używać również operatora BETWEEN, który pozwala wybierać dane z określonego zakresu, np.: SELECT * FROM osoby WHERE wiek BETWEEN 18 AND 30; zwróci rekordy z osobami o wieku od 18 do 30 lat. Jest to równoważne z zapisem: SELECT * FROM osoby WHERE wiek > 18 AND wiek < 30; 46/128

Język SQL komenda UPDATE Zmiana wierszy tabeli: UPDATE Składnia: UPDATE table_name SET column1 = value1, column2 = value2,... WHERE condition ); 47/128

Język SQL komenda UPDATE Zmiana wierszy tabeli: UPDATE Przykład: UPDATE Osoby SET imie = Katarzyna, nazwisko = Kwiatkowska WHERE id=2; ); 48/128

Język SQL komenda DELETE Usuwanie wierszy tabeli: DELETE FROM Składnia: DELETE FROM table_name WHERE condition ; Przykład: DELETE FROM OSOBY WHERE imie = Malgorzata ; Usunie wszystkie Małgorzaty z tabeli OSOBY 49/128

H2 umożliwia łączenie się z bazą z panelu kontrolnego z poziomu przeglądarki Wystarczy po instalacji odpalić program H2 Console, wtedy pojawią się następujące okienka: (plik z bazą musi być w katalogu domowym użytkownika) http://www.h2database.com/html/quickstart.html 50/128

51/128

Java i bazy danych Mamy już język porozumiewania się z bazą danych (SQL)....ale przecież chcąc porozumiewać się z bazą danych nie będziemy za każdym razem wpisywać komend w konsoli. Zwykle chcemy, by nasz program w wyniku np. naciśnięcia przycisku pobierał dane / odpowiednio modyfikował bazę danych. Chcielibyśmy więc bezpośrednio z poziomu kodu Javy wysyłać do bazy danych odpowiednie instrukcje. 52/128

Java DataBase Connectivity JDBC, ang. Java DataBase Connectivity, to biblioteka stanowiąca interfejs umożliwiający aplikacjom napisanym w języku Java porozumiewać się z bazami danych za pomocą języka SQL. Interfejs ten operuje na poziomie typowego dla baz danych języka SQL i pozwala w prosty sposób konstruować zapytania do bazy danych oraz wykorzystywać ich wyniki w kodzie Javy. Środowisko Java zawiera API JDBC, natomiast użytkownik musi dodatkowo uzyskać sterownik JDBC dedykowany do swojej bazy danych. 53/128

JDBC ogólna zasada wykorzystania 1. Uzyskanie połączenia ze źródłem danych 2. Wykonywanie operacji na bazie danych (przekazywanie poleceń w postaci kwerend SQL) 3. Przetwarzanie danych pobranych z bazy w efekcie wykonania kwerend 54/128

JDBC ogólna zasada wykorzystania // Łączenie z bazą: Connection con = DriverManager.getConnection( "jdbc:mydriver:mydatabase", username, password); // Wykonywanie kwerendy: Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery( "SELECT a, b, c FROM Table1"); // Przetwarzanie pobranych danych while (rs.next()) { int x = rs.getint("a"); String s = rs.getstring("b"); float f = rs.getfloat("c"); } 55/128

JDBC ogólna zasada wykorzystania // Łączenie z bazą: Connection con = DriverManager.getConnection( "jdbc:mydriver:mydatabase", username, password); H2: // Wykonywanie kwerendy: "jdbc:h2:nazwabazy", Statement stmt = con.createstatement(); username, ResultSet rs = stmt.executequery( Jeśli baza danych nie istnieje, password "SELECT a, b, c FROM Table1"); to próba podłączenia spowoduje // Przetwarzanie pobranych danych utworzenie nowej pustej bazy while (rs.next()) { (w postaci pliku *.db). int x = rs.getint("a"); String s = rs.getstring("b"); float f = rs.getfloat("c"); MySQL: } "jdbc:mysql://localhost/nazwabazy? user=username&password=password 56/128

Tworzenie bazy z poziomu JAVY TworzenieBazy.java Program otwiera / tworzy bazę danych H2 o nazwie nazwabazy nazwa użytkownika to sa domyślnie bez hasła conn = DriverManager.getConnection("jdbc:h2:nazwabazy", "sa", ""); // domyslnie nazwa uzytkownika to "sa" a dostep jest bez hasla - "" // Proba podlaczenia do bazy H2, ktora nie istnieje // domyslnie powoduje utworzenie nowej instancji pustej bazy // (w postaci pliku z rozszerzeniem *.db, np. nazwabazy.h2.db) // Dymyslne tworzenie pustej bazy danych czasem moze generowac bledy, // dlatego mozliwe jest wylaczenie domyslnego tworzenia pustej bazy // conn = DriverManager.getConnection("jdbc:h2:nazwabazy5;IFEXISTS=TRUE", "sa", ""); 57/128

JDBC ogólna zasada wykorzystania // Łączenie z bazą: Connection con = DriverManager.getConnection( "jdbc:mydriver:mydatabase", username, password); // Wykonywanie kwerendy: Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery( "SELECT a, b, c FROM Table1"); // Przetwarzanie pobranych danych Query = while (rs.next()) { Zapytanie, Kwerenda int x = rs.getint("a"); String s = rs.getstring("b"); float f = rs.getfloat("c"); } 58/128

JDBC ogólna zasada wykorzystania // Łączenie z bazą: Connection con = DriverManager.getConnection( "jdbc:mydriver:mydatabase", username, password); // Wykonywanie kwerendy: Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery( "SELECT a, b, c FROM Table1"); // Przetwarzanie pobranych danych Język SQL while (rs.next()) { int x = rs.getint("a"); String s = rs.getstring("b"); float f = rs.getfloat("c"); } 59/128

Operacje na bazie z poziomu JAVY Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery("select * FROM Tab1"); Trzy podstawowe metody wywołania kwerend: stmt.executequery(...), stmt.executeupdate(...), stmt.execute(...) Różnią się to sposobem przekazywania wyniku. W pierwszym przypadku otrzymamy wynik w postaci tabeli (wynik zapytania). ExecuteQuery stosuje się zazwyczaj do zapytań typu SELECT... W drugim przypadku otrzymamy ilość pomyślnie przeprowadzonych zmian w bazie. Update stosuje się zazwyczaj do zapytań typu CREATE TABLE... lub INSERT... Trzecia opcja jest uogólnieniem dwóch poprzednich. Zwraca wynik, z tym, że to użytkownik musi sprawdzić jaki wynik otrzymał. 60/128

Execute //Wyswietlanie calej tabeli: statement.execute("select * FROM waluty"); //Ograniczenie do 10 pierwszych rekordow statement.execute("select * FROM waluty limit 10" ); // Przykladowe kwerendy z dodatkwoym warunkiem: statement.execute("select * FROM waluty where data < '2001-03-27'"); statement.execute("select * FROM waluty where usd > 4.50"); statement.execute("select * FROM waluty where usd > 4.50 and eur < 3.83"); 61/128

TworzenieTabeli.java Program tworzy tabelę waluty i wypełnia przykładowymi wartościami. Statement statement = conn.createstatement(); // Usuwanie tabeli jeśli już istnieje // kolejne uruchomienie przykladu nie wygeneruje bledu: statement.executeupdate("drop TABLE IF EXISTS `waluty`;"); // Tworzenie tabeli o okreslonej strukturze danych statement.executeupdate("create TABLE `waluty` ("+ "`Id` int(6) unsigned NOT NULL auto_increment,"+ "`data` date default NULL,"+ "`USD` float default NULL,"+ "`EUR` float default NULL,"+ "`GBP` float default NULL,"+ "PRIMARY KEY (`Id`)"+ ") ;"); 62/128

TworzenieTabeli.java Dodawanie danych do tabeli: statement.executeupdate("insert INTO `waluty` (`Id`,`data`,`USD`,`EUR`,`GBP`) VALUES (1,'2000-0103',4.1171,4.165,6.6576);"); // Przykladowe rownowazne polecenia SQL: statement.executeupdate("insert INTO `waluty` VALUES (1,'2000-01-03',4.1171,4.165,6.6576);"); statement.executeupdate("insert INTO `waluty` (`data`,`usd`,`eur`,`gbp`) VALUES ('2000-01-03, 4.1171, 4.165, 6.6576 );"); statement.executeupdate("insert INTO waluty VALUES (1,'2000-01-03',4.1171,4.165,6.6576);"); statement.executeupdate("insert INTO waluty (Id,data,USD,EUR,GBP) VALUES (1,'2000-0103',4.1171,4.165,6.6576);"); 63/128

Prepared Statement Zamiast interfejsu Statement, w którym wykorzystujemy dokładną (statyczną) treść kodu SQL, można wykorzystać typ PreparedStatement, który pozwala na parametryzację. Użycie prekompilowanych komend jest wygodne, jeśli wywołujemy wiele podobnych komend na różnych argumentach, lub kiedy chcemy pobrać poszczególne wartości od użytkownika. PreparedStatement prep = conn.preparestatement ("INSERT into waluty(data, usd, eur, gbp) values (?,?,?,?)"); prep.setstring(1, "2000-01-03"); prep.setstring(2, "4.1171"); prep.setstring(3, "4.165"); prep.setstring(4, "6.6576"); prep.executeupdate(); Co jest równoważne: 64/128

Prepared Statement dodatkowa funkcjonalność Wyobraźmy sobie aplikację, do której użytkownik się loguje. Użytkownik podaje login ( name ) i hasło ( password ) a następnie uruchamiane jest zapytanie: statement.execute("select COUNT(*) FROM users WHERE name=" + name + "AND password=" + password); ResultSet rs = statement.getresultset(); rs.next(); if (rs.getint(1) == 0){ //niezalogowany } A użytkownik wpisuje jako login: 65/128

Prepared Statement dodatkowa funkcjonalność Wyobraźmy sobie aplikację, do której użytkownik się loguje. Użytkownik podaje login ( name ) i hasło ( password ) a następnie uruchamiane jest zapytanie: statement.execute("select COUNT(*) FROM users WHERE name=" + name + "AND password=" + password); ResultSet rs = statement.getresultset(); rs.next(); if (rs.getint(1) == 0){ //niezalogowany } A użytkownik wpisuje jako login: "; DROP TABLE users; --" drop table users; 66/128

Prepared Statement dodatkowa funkcjonalność A użytkownik wpisuje jako login: "; DROP TABLE users; --" Czyli baza danych dostaje zapytanie: SELECT COUNT(*) FROM users WHERE name=; DROP TABLE users; 67/128

Prepared Statement dodatkowa funkcjonalność A użytkownik wpisuje jako login: "; DROP TABLE users; --" Czyli baza danych dostaje zapytanie: Zwróci informacje o błędzie. SELECT COUNT(*) FROM users WHERE name=; DROP TABLE users; Usunie tabelę users. 68/128

Prepared Statement Jeśli chcemy pobierać wartości od użytkownika to nigdy, nigdy NIGDY nie tworzymy zapytań SQL z dodawania takich ciągów znaków. Należy używać polecenia PreparedStatement które zapewni, by podane przez użytkownika wartości nigdy nie zostanały ziterpretowane jako samodzielne polecenia SQL. 69/128

TworzenieTabeli.java Dodawanie danych do tabeli: // Rownowazne wywolanie z wykorzystaniem PreparedStatement PreparedStatement prep = conn.preparestatement ("INSERT into waluty(data, usd, eur, gbp) values (?,?,?,?)"); prep.setstring(1, "2000-01-03"); prep.setstring(2, textboxusd.text); prep.setstring(3, textboxeur.text); prep.setstring(4, textboxgbp.text); prep.executeupdate(); Używając PreparedStatement możemy bezpiecznie brać dane od użytkownika. 70/128

JDBC ogólna zasada wykorzystania // Łączenie z bazą: Connection con = DriverManager.getConnection( "jdbc:mydriver:mydatabase", username, password); // Wykonywanie kwerendy: Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery( "SELECT a, b, c FROM Table1"); // Przetwarzanie pobranych danych while (rs.next()) { int x = rs.getint("a"); String s = rs.getstring("b"); float f = rs.getfloat("c"); } 71/128

ResultSet Wyniki wykonanej kwerendy dostępne są w obiekcie klasy ResultSet. ResultSet zawiera linie (rekordy) z wyniku wykonanej operacji. Początkowo jest ustawiony przed pierwszą linią. Aby przesunąć go na następna linijkę i przy okazji sprawdzić, czy jest więcej wyników, wykorzystuje się metodę next(). 72/128

ResultSet, ResultSetMetaData ResultSet rs = statement.getresultset(); ResultSetMetaData md = rs.getmetadata(); //wyswietlanie nazw kolumn: for (int ii = 1; ii <= md.getcolumncount(); ii++){ System.out.print(md.getColumnName(ii)+ " "); } System.out.println(); // wyswietlanie poszczegolnych wierszy while (rs.next()) { for (int ii = 1; ii <= md.getcolumncount(); ii++){ System.out.print( rs.getobject(ii) + " "); } System.out.println(); } 73/128

WypisywanieTabeli.java //Wyswietlanie calej tabeli: statement.execute("select * FROM waluty"); //Ograniczenie do 10 pierwszych rekordow statement.execute("select * FROM waluty limit 10" ); // Przykladowe kwerendy z dodatkwoym warunkiem: statement.execute("select * FROM waluty where data < '2001-03-27'"); statement.execute("select * FROM waluty where usd > 4.50"); statement.execute("select * FROM waluty where usd > 4.50 and eur < 3.83"); Jeśli chcemy wyświetlić wynik z każdego statement, to po każdym execute musimy wyciągnąć ResultSet. 74/128

WypisywanieTabeli.java 75/128

QUIZ 76/128

Czym jest? DBMS H2 SQL JDBC Język zapytań System zarządzania bazą danych Biblioteka umożliwiająca łączenie się z bazą danych za pomocą Javy Baza danych 77/128

Czym jest? DBMS H2 SQL JDBC Język zapytań do porozumiewania się z bazą danych System zarządzania bazą danych (np. MySQL, Oracle, H2) Biblioteka umożliwiająca łączenie się z bazą danych za pomocą Javy Baza danych (przykład DBMS) 78/128

Czym jest? Kwerenda (query) Krotka (tuple) Relacja Klucz podstawowy Tabela Wiersz z tabeli (uporządkowany ciąg wartości) Zapytanie mające na celu np. pobranie danych, usuwanie, modyfikację. Minimalny zestaw atrybutów jednoznacznie identyfikujący każdą krotkę 79/128

Czym jest? Kwerenda (query) Krotka (tuple) Relacja Klucz podstawowy Tabela Wiersz z tabeli (uporządkowany ciąg wartości) Zapytanie mające na celu np. pobranie danych, usuwanie, modyfikację. Minimalny zestaw atrybutów jednoznacznie identyfikujący każdą krotkę 80/128

Do czego służy? INSERT INTO SELECT * FROM DROP TABLE CREATE TABLE UPDATE 81/128

Do czego służy? INSERT INTO SELECT * FROM DROP TABLE CREATE TABLE UPDATE Dodanie wiersza do tabeli Wyciągnięcie danych z bazy danych Usunięcie tabeli Stworzenie tabeli Modyfikacja wiersza tabeli 82/128

GIT (System Kontroli Wersji) oraz krótko o Window Builder (automatyczne GUI) Javadoc (dokumentacja) 83/128

System Kontroli Wersji GIT 84/128

System Kontroli Wersji System kontroli wersji to oprogramowanie które pomaga śledzić zmiany w kodzie na przestrzeni czasu. System kontroli wersji zapamiętuje konkretny stan danego kodu - i pozwala później odzyskać zapamiętaną wersję. Dzięki temu, że ma zapisanych kilka wersji tego samego kodu razem z oznaczeniem czasowym, może również porównać wersje ze sobą i jasno wyszczególnić zmimany. Pozwala na automatyczne przechowywanie, odzyskiwanie, logowanie i scalanie wersji kodu. 85/128

System Kontroli Wersji Prosty system kontroli wersji: Stworzenie katalogu o nazwie projekt Sukcesywne tworzenie wewnątrz podkatalogów z nazwami projekt_v2 i umieszczanie w nim konkretnych wersji kodu projekt_v1, Można nawet profesjonalnie poprawić system, używając dat zamiast zwykłych v1, v2... v223 86/128

System Kontroli Wersji 87/128

System Kontroli Wersji System kontroli wersji pomaga z: Tworzeniem backup-ów Odtwarzanie poprzednich wyników W wersji z piątku ten guzik jeszcze działał! Co zmieniliśmy? Rozwój kilku wersji równocześnie Pozwala zawsze wrócić i uruchomić poprzednią wersję programu. Porównywaniem konkretnej wersji Oczywiste i niezbędne. Jak komputer się spali albo dysk wysiądzie, mamy kopie zapasową. Jeśli dwie osoby chcą pracować jednocześnie nad tym samym projektem, system kontroli wersji pomoże bezboleśnie scalić ich pracę Workfows zachowywanie uprawnień oraz kontroli nad kodem W firmach zwykle dany kawałek kodu jest dołączany do programu dopiero po zrecenzowaniu przez starszego programistę. http://www.ateam-oracle.com/version-control/ 88/128

System Kontroli Wersji / trunk http://cswsolutions.com/blog/git-non-developers-part-ii/ 89/128

Kontrola wersji Lokalna kontrola wersji https://git-scm.com/book/en/v2/getting-started-about-version-control 90/128

Kontrola wersji Lokalna kontrola wersji Centralizowana kontrola wersji Subversion (SVN) https://git-scm.com/book/en/v2/getting-started-about-version-control 91/128

Kontrola wersji Lokalna kontrola wersji Centralizowana kontrola wersji Subversion (SVN) Rozproszona kontrola wersji GIT https://git-scm.com/book/en/v2/getting-started-about-version-control 92/128

Kontrola wersji Centralizowana kontrola wersji Subversion (SVN) pu ll Lokalna kontrola wersji pu sh Rozproszona kontrola wersji GIT Każdy ma swoją replikę (klon) https://git-scm.com/book/en/v2/getting-started-about-version-control repozytorium 93/128

GIT w praktyce Co zrobić aby używać GITa? Zainstalować program GIT https://git-scm.com/downloads. Wybrać serwer na którym będzie przechowywane centralne repozytorium Stworzyć nowe repozytorium (centralne) dla projektu Pobrać kod, tworząc przy okazji lokalne repozytorium Korzystanie z GITa: Dodawać, usuwać, modyfikować kod i pliki Update lokalnego repozytorium Update centralnego repozytorium Więcej informacji można znaleźć w: https://guides.github.com/activities/hello-world/ http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programistom/ http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/ http://namiekko.pl/2016/03/12/git-w-eclipse/ 94/128

GIT w praktyce Co zrobić aby używać GITa? Zainstalować program GIT https://git-scm.com/downloads. Wybrać serwer na którym będzie przechowywane centralne repozytorium Stworzyć nowe repozytorium (centralne) dla projektu Pobrać kod, tworząc przy okazji lokalne repozytorium Korzystanie z GITa: Dodawać, usuwać, modyfikować kod i pliki Update lokalnego repozytorium Update centralnego repozytorium Więcej informacji można znaleźć w: https://guides.github.com/activities/hello-world/ http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programistom/ http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/ http://namiekko.pl/2016/03/12/git-w-eclipse/ 95/128

Serwery na repozytoria GITa https://github.com/ https://gitlab.com/ https://bitbucket.org/ 96/128

GIT w praktyce Co zrobić aby używać GITa? Zainstalować program GIT https://git-scm.com/downloads. Wybrać serwer na którym będzie przechowywane centralne repozytorium Stworzyć nowe repozytorium dla projektu Pobrać kod, tworząc przy okazji lokalne repozytorium Korzystanie z GITa: Dodawać, usuwać, modyfikować kod i pliki Update lokalnego repozytorium Update centralnego repozytorium Więcej informacji można znaleźć w: https://guides.github.com/activities/hello-world/ http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programistom/ http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/ http://namiekko.pl/2016/03/12/git-w-eclipse/ 97/128

Nowe repozytorium centralne 98/128

GIT w praktyce Co zrobić aby używać GITa? Zainstalować program GIT https://git-scm.com/downloads. Wybrać serwer na którym będzie przechowywane centralne repozytorium Stworzyć nowe repozytorium dla projektu Pobrać kod, tworząc przy okazji lokalne repozytorium Korzystanie z GITa: Dodawać, usuwać, modyfikować kod i pliki Update lokalnego repozytorium Update centralnego repozytorium Więcej informacji można znaleźć w: https://guides.github.com/activities/hello-world/ http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programistom/ http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/ http://namiekko.pl/2016/03/12/git-w-eclipse/ 99/128

Pobieranie kodu z repozytorium Tworzenie repozytorium lokalnego Pobrać kod, tworząc repozytorium lokalne: Zdobywamy link URL do repozytorium clone używamy polecenia clone w wybranym przez nas miejscu. git clone https://github.com/login/nazwaprojektu 100/128

Clone URL Po wykonaniu klonowania mamy na komputerze repozytorium lokalne 101/128

GIT w praktyce Co zrobić aby używać GITa? Zainstalować program GIT https://git-scm.com/downloads. Wybrać serwer na którym będzie przechowywane centralne repozytorium Stworzyć nowe repozytorium dla projektu Pobrać kod, tworząc przy okazji lokalne repozytorium Korzystanie z GITa: Dodawać, usuwać, modyfikować kod i pliki Update lokalnego repozytorium Update centralnego repozytorium Więcej informacji można znaleźć w: https://guides.github.com/activities/hello-world/ http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programistom/ http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/ http://namiekko.pl/2016/03/12/git-w-eclipse/ 102/128

Korzystanie z GITa Dodawanie, usuwanie, modyfikacja plików Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze Do śledzenia aktualnych zmian służy polecenie status Update lokalnego repozytorium Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne repozytorium Polecenia add i commit Update centralnego repozytorium Polecenie push Oraz ściągnięcie danych z centralnego repozytorium: pull 103/128

Korzystanie z GITa Dodawanie, usuwanie, modyfikacja plików Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze Do śledzenia aktualnych zmian służy polecenie status Update lokalnego repozytorium - główna i domyślna $ git status Żeby nasze zmiany zostały master zauważone i zapamiętane przez lokalne gałąź repozytorium On branch master repozytorium Your branch is up-to-date with 'origin/master'. Polecenia add i commit Changes not staged for commit: Update centralnego repozytorium (use "git add <file>..." to update what will be committed) (use "gitpush checkout -- <file>..." to discard changes in working dir Polecenie Oraz ściągnięcie danych z centralnego repozytorium: pull Wprowadzam jakies zmiany lalala; README.md Untracked files: (use "git add <file>..." to include in what will be committed) test.txt no changes added to commit (use "git add" and/or "git commit -a") 104/128

Korzystanie z GITa Dodawanie, usuwanie, modyfikacja plików Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze Do śledzenia aktualnych zmian służy polecenie status Update lokalnego repozytorium $ git status Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne On branch master repozytorium Your branch is up-to-date with 'origin/master'. Sugestie co zrobić ze zmianami: Polecenia add i commit add / checkout Changes not staged for commit: Update centralnego repozytorium (use "git add <file>..." to update what will be committed) (use "gitpush checkout -- <file>..." to discard changes in working dir Polecenie Oraz ściągnięcie danych z centralnego repozytorium: pull Wprowadzam jakies zmiany lalala; README.md Untracked files: (use "git add <file>..." to include in what will be committed) test.txt no changes added to commit (use "git add" and/or "git commit -a") 105/128

Korzystanie z GITa Dodawanie, usuwanie, modyfikacja plików Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze Do śledzenia aktualnych zmian służy polecenie status Update lokalnego repozytorium Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne repozytorium Polecenia add i commit Update centralnego repozytorium Polecenie push Oraz ściągnięcie danych z centralnego repozytorium: pull 106/128

Korzystanie z GITa Jeśli: Dodawanie, usuwanie, modyfikacja plików Zmodyfikowałam plik README.md Tak samo, jak zawsze: pliki lokalnie na własnym Stworzyłam nowy plik modyfikujemy test.txt komputerze Chciałabym zapisać te zmiany w repozytorium, więc: Używam add aktualnych na wszystkich plikach zmiany Do śledzenia zmian służy których polecenie statuschcę zapisać tzw. Staging - przygotowywuję pliki Update lokalnego repozytorium $ git addzmiany test.txt Żeby nasze zostały zauważone i zapamiętane przez lokalne $ git add * repozytorium $ git status Polecenia add i commit On branch master Your branch is up-to-date with 'origin/ Update centralnego repozytorium Polecenie push Changes to be committed: Oraz ściągnięcie danych centralnego pull (use "git reset HEADz<file>..." to repozytorium: un modified: README.md new file: test.txt Używam status żeby zobaczyć, czy wszystko jest w porządku 107/128

Korzystanie z GITa Dodawanie, usuwanie, modyfikacja plików Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze Do śledzenia aktualnych zmian służy polecenie status Update lokalnego repozytorium Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne repozytorium Polecenia add i commit Używam commit żeby zapisać te zmiany Update centralnego repozytorium Polecenie push git commit Oraz ściągnięcie danych z centralnego repozytorium: pull lub commit -m komentarz żeby dodać komentarz $ git commit -m "Moj pierwszy commit z lokalnego repo" [master 09ba074] Moj pierwszy commit z lokalnego repo 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 test.txt 108/128

Korzystanie z GITa Dodawanie, usuwanie, modyfikacja plików Tak samo, jak zawsze: modyfikujemy pliki lokalnie na własnym komputerze Do śledzenia aktualnych zmian służy polecenie status Update lokalnego repozytorium Żeby nasze zmiany zostały zauważone i zapamiętane przez lokalne repozytorium Polecenia add i commit Update centralnego repozytorium Polecenie push Oraz ściągnięcie danych z centralnego repozytorium: pull $ git push $ git pull 109/128

Korzystanie z GITa Zmieniłam lokalnie plik test1.txt oraz dodałam nowy plik test2.txt. Chcę je wypchnąć do centralnego repozytorium. Co robię? $ $ $ $ $ $ $ git git git git git git git status add test1.txt $ git add * add test2.txt status commit -m "Test changes pull push $ oznacza nowe polecenie w konsoli; nie należy go wpisywać. 110/128

Git w Eclipse - EGit Help->Install New Software->http://download.eclipse.org/egit/updates/ 111/128

Git w Eclipse - EGit Stworzenie nowego projektu w oparciu o istniejące repozytorium. Import Łatwe, Projects from Git 112/128

Git w Eclipse - EGit Mamy dwie opcje: stworzyć projekt na podstawie istniejącego, lokalnego repozytorium (bo np. użyliśmy clone w lini komand jak było pokazane wcześniej). 113/128

Git w Eclipse - EGit Mamy dwie opcje: stworzyć projekt na podstawie istniejącego, lokalnego repozytorium (bo np. użyliśmy clone w lini komand jak było pokazane wcześniej). Albo klonować bezpośrednio z repozytorium centralnego 114/128

Git w Eclipse - EGit Import z projektu Gita przeprowadza nas przez kolejne okienka kreatora Musimy wybrać gałęzie do sklonowania z repozytorium. Domyślnie będzie to główna gałąź master. 115/128

(1) Odkliknij use default location i wybierz katalog w którym znajduje się repozytorium! (inaczej import zwróci błąd) Import using the New Project Wizard jeśli w stworzonym repozytorium centralnym chcemy utworzyć nowy projekt eclipse. (2) General project dobrze zadziała dla wszystkich repozytoriów, gdzie nie mamy i nie chcemy mieć projektu eclipse a. 116/128

A jeśli już mam mój projekt? Jeśli nie chcę importować projektu z zewnątrz, tylko chcę wypchnąć istniejący projekt do repozytorium: Projekt Łatwe, Team Łatwe, Share Project... Ponownie eclipse przeprowadzi nas przez kolejne okienka kreatora 117/128

Commit, push... Git natychmiast bardzo wyraźnie ( > ) sygnalizuje te zmiany. Jeśli wybierzemy Commit... pojawi nam się przyjazne okienko wktórym wybieramy pliki które chcielibyśmy wypchnąć do repozytorium: - lokalnego (Commit) - zarówno lokalnego i centralnego (Commit and Push) Wyświetlenie menu kontroli wersji (Team w menu kontekstowym projektu). 118/128

GIT w praktyce Co zrobić aby używać GITa? Zainstalować program GIT https://git-scm.com/downloads Wybrać serwer na którym będzie przechowywane centralne repozytorium https://github.com/ Zainstalować odpowiednią wtyczkę do eclipse a Help Install New Software http://download.eclipse.org/egit/updates/ Więcej informacji można znaleźć w: https://guides.github.com/activities/hello-world/ http://namiekko.pl/2016/03/05/no-i-git-kontrola-wersji-sluzy-nie-tylko-programis tom/ http://namiekko.pl/2016/03/13/git-przedzieram-sie-przez-galezie/ http://namiekko.pl/2016/03/12/git-w-eclipse/ 119/128

Window Builder 120/128

Window Builder Eclipse Help Install New Software Add (podać link ze strony) Help Help Install New Software Add (podać link ze strony) Install New Software Help Install New Software Add (podać link ze strony) Add (podać link ze strony) https://projects.eclipse.org/projects/tools.windowbuilder 121/128

Window Builder Aby uruchomić, klikamy na danym pliku java (musi być to klasa dziedzicząca po elemencie GUI/Swing) Open With Help Install New Software Add (podać link ze strony) WindowBuilder Editor 122/128

Window Builder Wybranie zakładki Design przenosi nas w graficzny tryb projektowy. UWAGA: warto monitorować w Source co właściwie program robi... 123/128

Window Builder Przycisku przy Properties pozwalają modyfikować inne atrybuty albo dodawać zdarzenia! 124/128

Javadoc Generowanie dokumentacji w postaci HTML: Project Generate Javadoc W Javadoc Generation: Javadoc command: poszukaj pliku javadoc.exe (zwykle w [sciezka_do_jdk]\bin\javadoc.exe). Zaznacz kwadracik dla projektu / paczki / pliku dla którego tworzysz Javadoc Destination: miejsce, gdzie dokumentacja ma zostać zapisana Finish Wygenerowana dokumentacja będzie w wybranym folderze. Należy odpalić plik index.html. Jak pisać komentarze by były uwzględniane w javadoc: http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html Jak wygenerować javadoc HTML w eclipse: https://stackoverflow.com/questions/4468669/how-to-generate-javadoc-html-in-eclipse?ut m_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa 125/128

Dziękuję za Uwagę! To już ostatni wykład. Dziękuję wszystkim za uczestnictwo i powodzenia na laboratoriach! 126/128

Informacje dodatkowe 127/128

Nomenklatura obiektów w różnych terminologiach Teoria relacyjna Model ER (EntityRelationship) Relacyjne bazy Aplikacje Relacja Encja Tabela Klasa Krotka Instancja Wiersz Instancja klasy (obiekt) Atrybut Atrybut Kolumna Właściwość, atrybut Dziedzina Dziedzina/typ Typ danych Typ danych 128/128

Struktura JDBC 129/128

Klasy i interfejsy JDBC 130/128