Wprowadzenie do JDBC z wykorzystaniem bazy H2

Podobne dokumenty
Programowanie Obiektowe Java

Programowanie Obiektowe Java

Programowanie Obiektowe Java

Język SQL, zajęcia nr 1

Wykład 5. SQL praca z tabelami 2

Relacyjne bazy danych. Podstawy SQL

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

Bazy danych. Polecenia SQL

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

Relacyjne bazy danych. Podstawy SQL

Wykład 05 Bazy danych

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

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

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

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

JAVA I BAZY DANYCH. MATERIAŁY:

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

Java i jej wykorzystanie do tworzenia dynamicznych aplikacji Webowych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Podejście obiektowe do relacyjnych baz danych Hibernate.

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

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 Gekosale 1.4

Bazy danych 7. SQL podstawy

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

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

Kurs. Podstawy MySQL

Metody dostępu do danych

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

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

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

Wprowadzenie do baz danych

Bazy danych. dr inż. Arkadiusz Mirakowski

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

SQL (ang. Structured Query Language)

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

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Zaawansowane Systemy Decyzyjne. Laboratorium

Projektowanie systemów baz danych

Bazy Danych i Usługi Sieciowe

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

JDBC (Java Database Connectivity vit )

Systemy GIS Tworzenie zapytań w bazach danych

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

Wykład 6. SQL praca z tabelami 3

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

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

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

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

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

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Bazy danych i usługi sieciowe

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

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

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

Database Connectivity

Bazy danych 5. Samozłaczenie SQL podstawy

Bartosz Jachnik - Kino

SIECI KOMPUTEROWE I BAZY DANYCH

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

Komunikacja z bazą danych psql

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Bazy danych. Dr inż. Paweł Kasprowski

Wykład 8. SQL praca z tabelami 5

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

Bazy danych. dr Radosław Matusik. radmat

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

Struktura drzewa w MySQL. Michał Tyszczenko

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Instalacja MySQL.

Przestrzenne bazy danych Podstawy języka SQL

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Programowanie w Ruby

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

Ćwiczenie zapytań języka bazy danych PostgreSQL

Połączenie z bazą danych : mysql h u root -p Enter password: *******

Bazy danych SQLite w Javie

Oracle11g: Wprowadzenie do SQL

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Wykład 2. SQL 1 Structured Query Lenguage

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

NARZĘDZIA WIZUALIZACJI

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

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

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

opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)

Podstawy technologii WWW

a) ile wynosiła populacja najbardziej i najmniej ludnego z województw (oraz jakie były ich nazwy)

Paweł Rajba

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

Transkrypt:

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 pomocą języka SQL. Interfejs ten operuje na poziomie typowego dla baz danych języka SQL (ang. Structured Query Language) 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.

Struktura JDBC

Klasy i interfejsy JDBC

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

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"); }

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

Język SQL tworzenie przykładowej tabeli DROP TABLE IF EXISTS `waluty`; 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`) ) ;

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) NOT NULL, `Nazwisko` varchar(40)not NULL, `data_urodzenia` date default NULL, PRIMARY KEY (`Id`) ) ;

Język SQL dodawanie danych INSERT INTO `waluty` VALUES (1,'2000-01-03,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-01-06,4.1129);

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

Język SQL komenda SELECT Chcąc pobrać wszystkie kolumny z tableli 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.

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)

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

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). W drugim przypadku otrzymamy ilość pomyślnie przeprowadzonych zmian w bazie. Trzecia opcja jest uogólnieniem dwóch poprzednich. Zwraca wynik, z tym, że to użytkownik musi sprawdzić jaki wynik otrzymał. executequery() stosuje się zazwyczaj do zapytań typu SELECT..., a executeupdate() do zapytań typu CREATE TABLE... lub INSERT...

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().

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(); }

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. 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: statement.executeupdate("insert INTO waluty (Id,data,USD,EUR,GBP) VALUES (1,'2000-01-03',4.1171,4.165,6.6576);");

Dodawanie bibliotek do projektu Eclipse - uzupełnienie Dodawanie bibliotek poprzez Add External JAR (jak pokazano na poprzednim wykładzie) może być niewygodne przy przenoszeniu eksportowaniu/importowaniu projektów, gdyż każdorazowo trzeba kopiować/ściągać potrzebne piłki JAR oraz konfigurować Build Path. To ograniczenie łatwo ominąć poprzez umieszczanie bibliotek bezpośrednio w projekcie, wówczas przy eksporcie będą one dodawane do tworzonego archiwum zaś Build Path będzie aktualny po imporcie na inny komputer.

Dodawanie bibliotek do projektu Eclipse Jak to zrobić? 1. Utworzyć w katalogu z projektem podkatalog, w którym będą umieszczone pliki JAR z bibliotekami (np. o nazwie lib ). 2. Skopiować wymagane pliki JAR do katalogu Tworzenie katalogu i kopiowanie można wykonać z poziomu Eclipse (File->New->Folder, Copy->Paste), lub operując bezpośrednio na katalogu workspace na dysku, ale wówczas po skopiowaniu plików projekt należy odświeżyć (Refresh), żeby pliki były widzialne w Eclipse

Dodawanie bibliotek do projektu Eclipse 3. Następnie należy dodać biblioteki do Build Path projektu: - 1 metoda: rozwinięcie katalogu lib i kliknięcie prawym klawiszem na wybranym pliku JAR, a potem wybranie opcji Build Path-> Add to Build Path - 2 metoda: konfiguracja Build Path projektu i dodanie biblioteki poprzez Add JAR (nie jak poprzednio Add External JAR) i wskazanie lokalizacji w podkatalogu projektu. Przykład utworzenie nowego projektu zawierającego bibliotekę bazy H2.

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

Baza danych H2

Tworzenie bazy z poziomu JAVY TworzenieBazy.java (tworzenie nowego projektu z osadzoną biblioteką) 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", "");

TworzenieTabeli.java 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`)"+ ") ;");

Dodawanie danych do tabeli: TworzenieTabeli.java statement.executeupdate("insert INTO `waluty` (`Id`,`data`,`USD`,`EUR`,`GBP`) VALUES (1,'2000-01- 03',4.1171,4.165,6.6576);"); // Przykladowe rownowazne polecenia SQL: statement.executeupdateupdate("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-01-03',4.1171,4.165,6.6576);");

Dodawanie danych do tabeli: TworzenieTabeli.java // 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, "4.1171"); prep.setstring(3, "4.165"); prep.setstring(4, "6.6576"); prep.executeupdate();*/

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");

WypisywanieTabeli.java ResultSet rs = statement.getresultset(); ResultSetMetaData md = rs.getmetadata(); for (int ii = 1; ii <= md.getcolumncount(); ii++){ System.out.print(md.getColumnName(ii)+ " "); } System.out.println(); while (rs.next()) { for (int ii = 1; ii <= md.getcolumncount(); ii++){ System.out.print( rs.getobject(ii) + " "); } System.out.println();

Wykres.java Tworzenie pliku JAR konieczny dostęp do pliku z bazą danych

H2 umożliwia łączenie się z bazą z panelu kontrolnego z poziomu przeglądarki (plik z bazą musi być w katalogu domowym użytkownika)

demonstracja działania na przykładzie wygenerowanej bazy