Lekce 7 - Derby DB - Připojení k databázi LAN/WAN
V předchozím kvízu, Kvíz - DataSource a možnosti připojení Derby DB v Javě, jsme si ověřili nabyté zkušenosti z předchozích lekcí.
Tato lekce bude velmi odpočinková. Prakticky použijeme projekt z
předchozího příkladu, jen jej mírně upravíme. Danou databázi
(databaze04), kterou jsme vytvořili v minulém příkladu, zkopíruji a
přenesu na jiné PC v síti. Takže databáze bude na PC s IPv4
192.168.123.9
a klient, který se bude připojovat, bude na IPv4
192.168.123.5
.
Připojení přes síť k databázi je naprosto jednoduché. Databázi je
pouze nutné spustit s nastavením aby akceptovala sítové připojení,
protože v defaultním nastavení je tato komunikace vypnutá. A pak jen v
klientovi upravit cestu k připojení tak, že místo localhost
zadáme IP adresu v dané verzi (IPv4, IPv6),
např.132.123.55.68
nebo přímo doménu, např.
priklad.domena.cz
. Zde si předvedeme standardní
spuštění pro localhost.

Pokud provedete standardní spuštění a zkusíte se připojit na danou IP s
defaultním portem, klient se vám přes LAN nespojí. Je nutné provést
spuštění s parametry, které vám přístup umožní přes LAN (WAN). Zde na
dalším screenshotu lze vidět jak budeme derby server spouštět. Doporučuji
spouštět jako administrator + správce, předejdeme tím problémům ohledně
práv přístupu, pokud používáte systém práv na PC. Server spustíme
příkazem
startNetworkServer -h 192.168.123.9 -p 2222
, kde
přepínač -h
definuje IP adresu sítové karty
umístěnou na PC, kde poběží DerbyServer a -p
definuje port, kde bude Derby Server naslouchat. Protože je databaze04
obsažena v celém adresáři, je možné ji přenášet mezi DerbyServery
pouhým kopírováním. Taktéž, pokud chcete danou databázi smazat, stačí
daný adresář smazat a DerbyServer ani nebude tušit, že mu nějaká
databáze chybí.

Co se týče WAN (internet), tak zde je samozřejmě princip úplně identický, že nestojí ani za zmínku. Prostě za IP dosadíte pouze veřejnou (public) IP adresu vašeho PC, pokud je viditelný z internetu. Případně pokud máte NAT, je nutné v routeru nastavit přesměrování na port a IP v LAN. Za IP DerbyServeru dáte IP v LAN, a klient se bude připojovat na adresu routeru, jenž poté pouze provede automatické přesměrování komunikace.
Příklad na připojení přes LAN
Vytvoříme testovací příklad v Java SE a projekt v IDE. Přidáme opět externí knihovny z(..\lib\..) do našeho projektu do CLASSPATH.
- derby.jar
- derbyclient.jar
- derbytools.jar
- derbyoptionaltools.jar
Jak jsem již výše uvedl, jedná se o téměř identický kód z
předchozího příkladu, kdy jediná zásadní úprava bude v připojení. Jak
vidíte, určili jsme IP adresu a samozřejmě port, na kterém Derby Server
naslouchá.
jdbc:derby://192.168.123.9:2222/databaze04;user=Uzivatel4;password=Heslo4;

Samozřejmě, pokud budete používat tento kód nezapomeňte mou IPv4 změnit za svou IP.
package net; import java.sql.*; public class ProjektLAN { private static Connection connect = null; private static Statement statement = null; private static ResultSet odpoved = null; static { try { Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance(); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { System.out.println("Problem s nactenim driveru - nutne pridat do CLASSPATH"); } } private static void pripojeniDatabazeLAN() { try { connect = DriverManager.getConnection("jdbc:derby://192.168.123.9:2222/databaze04;user=Uzivatel4;password=Heslo4;"); System.out.println("Podarilo se pripojit k databazi04"); } catch (Exception e) { System.err.println("Nepodarilo se pripojit k databazi04"); if (connect == null) { System.exit(1); } } } private static void vypisemeData() { try { statement = connect.createStatement(); odpoved = statement.executeQuery("SELECT * FROM Employee ORDER BY id"); System.out.print("Podarilo se ziskat data :"); while (odpoved.next()) { System.out.print("\nJmeno :" + odpoved.getString(2)); System.out.print("\tPrijmeni :" + odpoved.getString(3)); System.out.print("\tMail:" + odpoved.getString(4)); } } catch (SQLException e) { System.out.println("Nepovedlo se ziskat data :"); e.printStackTrace(); } } private static void odpojimeDatabazi() { try { if (statement != null) { statement.close(); } if (connect != null) { connect.close(); } System.out.println("\nPodarilo se odpojit od databaze"); } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[] args) { System.out.println("Start Programu"); pripojeniDatabazeLAN(); vypisemeData(); odpojimeDatabazi(); System.out.println("Konec Programu"); } }
Zde je krásně vidět výstup spuštěného programu do konzole. Kód je jednoduchý. Nejdříve se připojíme, pak provedeme výpis vybrané tabulky a nakonec se odhlásíme.

Spuštění jsme provedli z IDE, nicméně nic nám nebrání provést export do runnable *.jar, a spustit projekt z příkazového řádku.

Příště, Derby DB - Embedded (vestavěná databáze), si rozebereme chování embedded (vestavěné) databáze.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkamiStaženo 493x (4.33 kB)