• Nie Znaleziono Wyników

Protokół JDBC – współpraca z relacyjnymi bazami danych lab4

N/A
N/A
Protected

Academic year: 2021

Share "Protokół JDBC – współpraca z relacyjnymi bazami danych lab4"

Copied!
29
0
0

Pełen tekst

(1)

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

lab4

Dr inż. Zofia Kruczkiewicz Programowanie aplikacji

internetowych

(2)

Zadanie1 – Połączenie z bazą danych travel systemu bazodanowego Derby (metoda void polaczenie_z_baza()),

wyświetlanie zawartości tabeli Person (metoda void wyswietl_osoby() )

1. Uruchom program Baza_1 w środowisku NetBeans 6.7.1 – załącznik do laboratorium.

2. W okienku Services należy otworzyć pozycję Databases. Następnie należy kliknąć prawym klawiszem

myszy na rozerwany prostokąt bazy danych jdbc:derby://localhost:1527/travel. W menu podręcznym należy kliknąć na pozycję Connect. Po chwili prostokąt zostanie scalony, co symbolizuje połączenie z bazą danych.

(3)

Widok bazy danych travel

(4)

Schemat bazy danych travel

Klucze główne

Klucze obce

(5)

Klucze główne

Klucze obce

(6)

Klucze główne Klucze

obce

(7)

Wyświetlenie danych z tabeli PERSON

(8)

Zawartość tabeli PERSON

(9)
(10)

Wykonanie zapytania na tabeli

PERSON wykonanie działań

pomocniczych

(11)

Wynik działania programu

(12)

Zadanie 2

cd zadania 1- należy dodać:

wyświetlanie zawartość tabeli TRIP (metoda void wyswietl_wycieczki()), wyświetlanie wycieczek każdej osoby (metoda void wyswietl_wycieczki_osob())

1. Wykonaj kopię programu Baza_1 jako Baza_2 (patrz instrukcja do lab3 - zad.2, pkt. 1) 2. Zmień nazwę pliku baza_1 na baza_2 (patrz instrukcja do lab3 – zad.2, pkt. 2 )

3. Dodaj bibliotekę sterownika derbyclient.jar jak poniżej. (źródłowe położenie to np..

C:\Sun\AppServer\javadb\lib)

(13)

4. Zmodyfikuj zawartość metody void wyswietl_osoby() wg slajdu poniżej.

(14)

5. Dodaj metodę void wyswietl_wycieczki() - wyświetlanie zawartość tabeli TRIP

(15)

6. Dodaj metodę void wyswietl_wycieczki_osob() -- wyświetlanie wycieczek każdej osoby

(16)

7. Uruchom program

(17)

Wynik działania programu (z lewej strony: zawartość tabeli TRIP, z prawej strony zawartość złączonych tabel PERSON i TRIP)

(18)

Zadanie 3 cd zadania 2

dodawanie nowych osób do tabeli PERSON oraz dodawanie nowych wycieczek wybranej osoby do tabeli TRIP

1. Wykonaj kopię programu Baza_2 jako Baza_3 (patrz instrukcja do lab3 - zad.2, pkt. 1) 2. Zmień nazwę pliku baza_2 na baza_3 (patrz instrukcja do lab3 – zad.2, pkt. 2 )

3. Dodaj sterownik derbyclient.jar wg pkt3 z zad2.

4. Dodaj metodę void wstaw_osobe()

4.1. dodaj pomocniczą klasę WeWy – do wprowadzania danych z klawiatury. Podczas edycji kodu zaimportuj brakująced biblioteki za pomocą Fix Imports (kliknij prawym klawiszem w oknie Edytora Javy i wybór opcji Fix Imports)

class WeWy {

static String weString(String menu) {

InputStreamReader wejscie = new InputStreamReader(System.in);

BufferedReader bufor = new BufferedReader(wejscie);

try {

System.out.print(menu);

return bufor.readLine();

} catch (IOException e) {

System.err.println("Blad IO String");

return "";

} } }

(19)

4.2. Dodaj klasę Person do wprowadzania danych do tabeli Person

class Person {

public String name, jobtitle;

public void wstaw_tytul() {

name = WeWy.weString("Podaj nazwisko: ");

jobtitle = WeWy.weString("Podaj stanowisko pracy: ");

} }

(20)

4.3. Dodaj metodę public String klucz_glowny(String sql1, String sql2) do klasy baza_3 w celu wyznaczenia wartości kolejnego klucza głównego. Metoda jest uniwersalna,

ponieważ łańcuch sql2 + "."+sql1 tworzy nazwę pola klucza głównego w dowolnej tabeli (sql1 jest nazwą klucza głównego, a sql2 jest nazwą tabeli). Metoda zwraca wartość kolejnego klucza głównego, jakim można nadać nowej krotce lub null.

public String klucz_glowny(String sql1, String sql2) { try {

sql = " SELECT MAX(" + sql2 + "."+sql1 + ")+1 AS MAXID FROM " + sql2;

krotki = polecenie.executeQuery(sql);

krotki.next();

String pom = krotki.getString("MAXID");

return pom;

} catch (Exception e) { }

return null;

}

(21)

4.4. Dodaj metodę void wstaw_osobe() do klasy baza_3 w celu dodania nowej krotki do tabeli PERSON

public void wstaw_osobe() throws SQLException { String id_osoby;

Person t = new Person();

t.wstaw_tytul();

polaczenie.setAutoCommit(false);

try {

polecenie = polaczenie.createStatement();

if((id_osoby = klucz_glowny("PERSONID", "TRAVEL.PERSON"))==null) return;

sql = "INSERT INTO TRAVEL.PERSON (PERSONID,NAME,JOBTITLE,FREQUENTFLYER)"

+ " VALUES (" + id_osoby + ",'" + t.name + "','" + t.jobtitle + "'," + 0 + ")";

polecenie.addBatch(sql);

polecenie.executeBatch();

polaczenie.commit();

} catch (BatchUpdateException e) {

System.out.println("Wycofanie transakcji");

polaczenie.rollback();

} }

(22)

4.5. Wynik działania nowej metody

(23)

5. Dodawanie nowej krotki do tablicy TRIP

5.1. Dodaj klasę Trip do wprowadzania danych do tabeli TRIP. Metoda void wstaw_date()

otrzymuje liczbę dni metodą weString() i dodaje je do daty bieżącej metodą setTime. Następnie wykorzystuje metodą SimpleDateFormat do nadania dacie formatu wymaganego w tabeli TRIP w bazie danych

class Trip {

public String depcity, destcity;

String depdate;

void wstaw_depcity() {

depcity = WeWy.weString("Podaj miasto poczatkowe: ");

}

void wstaw_destcity() {

destcity = WeWy.weString("Podaj miasto koncowe: ");

}

void wstaw_date() {

Date pom1 = new Date();

String pom2 = WeWy.weString("Podaj date: "); // liczbe dni od dnia bieżącego pom1.setTime(pom1.getTime() + Long.parseLong(pom2) * 24 * 60 * 60 * 1000);

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

depdate = format.format(pom1.getTime());

}

public void wstaw_wycieczke() { wstaw_depcity();

wstaw_destcity();

wstaw_date();

} }

(24)

5.2. Należy dodać metodę public String wyszukaj_typ_wycieczki() do klasy baza_3 w celu wyszukania klucza głównego typu wycieczki, którą należy dodać.

public String wyszukaj_typ_wycieczki() { try {

String typ = WeWy.weString("Podaj typ wycieczki: ");

sql = "SELECT * FROM TRAVEL.TRIPTYPE WHERE TRAVEL.TRIPTYPE.NAME = '" + typ + "'";

krotki = polecenie.executeQuery(sql);

if (krotki.next()) {

return krotki.getString("TRIPTYPEID");

}

} catch (Exception e) { } return null;

}

5.3. Należy dodać metodę public String wyszukaj_osobe() do klasy baza_3 w celu wyszukania klucza głównego osoby, której należy dodać nowa wycieczkę

public String wyszukaj_osobe() { try {

String name = WeWy.weString("Podaj nazwisko osoby: ");

sql = "SELECT * FROM TRAVEL.PERSON WHERE TRAVEL.PERSON.NAME = '" + name + "'";

krotki = polecenie.executeQuery(sql);

if (krotki.next()) {

return krotki.getString("PERSONID");

}

} catch (Exception e) { } return null;

}

(25)

5.4. Należy dodać metodę public void wstaw_wycieczke() do klasy baza_3 w celu wstawienia nowej krotki do tabeli TRIP

public void wstaw_wycieczke() throws SQLException { Trip k = new Trip();

k.wstaw_wycieczke();

String id_osoby, id_typ, id_trip;

polaczenie.setAutoCommit(false);

try {

polecenie = polaczenie.createStatement();

if ((id_osoby = wyszukaj_osobe()) == null) { return;

}

if ((id_typ = wyszukaj_typ_wycieczki()) == null) { return;

}

if ((id_trip = klucz_glowny("TRIPID", "TRAVEL.TRIP")) == null) { return;

}

sql = "INSERT INTO TRAVEL.TRIP (DEPDATE,DEPCITY,DESTCITY,TRIPTYPEID,PERSONID,TRIPID)"

+ " VALUES ('" + k.depdate + "','" + k.depcity + "','" + k.destcity + "'," + id_typ + "," + id_osoby + "," + id_trip + ")";

polecenie.executeUpdate(sql);

polecenie.executeBatch();

polaczenie.commit();

} catch (BatchUpdateException e) {

System.out.println("Wycofanie transakcji");

polaczenie.rollback();

} }

(26)

5.5. Metoda main

(27)

5.6. Wynik działania nowej metody

(28)

Zadanie 4 cd zadania 3

dodawanie przeszukiwania tabel PERSON

dodawanie nowych krotek do wybranej tabeli z: HOTEL, FLIGHT, CARRENTAL lub TRIPTYPE

dodanie dowolnej operacji na tabelach bazy danych travel

1. Wykonaj kopię programu Baza_3 jako Baza_4 (patrz instrukcja do lab3 - zad.2, pkt. 1)

2. Zmień nazwę pliku baza_3 na baza_4 (patrz instrukcja do lab3 – zad.2, pkt. 2 )

3. Dodaj sterownik derbyclient.jar wg pkt3 z zad2.

4. Dodaj metodę public void wyszukaj_wg_stanowiska() throws SQLException, która wykonuje zapytanie wyszukiwania Osob wg stanowiska w tablicy PERSON

5. Dodaj metodę, która wstawia nową krotkę do tabeli HOTEL, FLIGHT, CARRENTAL lub TRIPTYPE.

6. Wykonaj dowolną operację w bazie danych travel.

(29)

Zadanie 5 - dodatkowe

1. Wykonaj interfejs graficzny użytkownika do wybranych operacji na bazie danych wykonanych w zadaniach1-4.

2. Przykłady prostych programów z GUI do wyświetlania zawartości tabeli

PERSON zamieszczono w przykładowych programach Baza_5 i Baza_6

dołączonych do laboratorium.

Cytaty

Powiązane dokumenty

wstawieniu komponentu TStringGrid, przycisku typu TButton, pola komunikatów TLabel oraz metody.. Execute, atrybutów wybrany

Zmiana szerokości kolumny (wysokości wiersza) za pomocą myszy 77 2.14.5.. Formatowanie tekstu z użyciem

[r]

[r]

[r]

[r]

[r]

[r]