7. diel - Derby DB - Pripojenie k databáze LAN / WAN
Táto lekcia bude veľmi odpočinková. Prakticky použijeme projekt z
predchádzajúceho príkladu, len ho mierne upravíme. Danú databázu
(databaze04), ktorú sme vytvorili v minulom príklade, skopírujem a prenesiem
na iné PC v sieti. Takže databázy bude na PC s IPv4
192.168.123.9
a klient, ktorý sa bude pripájať, bude na IPv4
192.168.123.5
.
Pripojenie cez sieť k databáze je úplne jednoduché. Databázu je len
nutné spustiť s nastavením aby akceptovala sitové pripojenie, pretože v
defaultným nastavení je táto komunikácia vypnutá. A potom len v klientovi
upraviť cestu k pripojenia tak, že namiesto localhost zadáme
IP adresu v danej verzii (IPv4, IPv6), napr.
132.123.55.68
alebo priamo doménu, napr.
priklad.domena.cz
. Tu si predvedieme štandardné
spustenie pre localhost.
Ak urobíte štandardné spustenie a skúsite sa pripojiť na danú IP s
defaultným portom, klient sa vám cez LAN nespoja. Je nutné vykonať spustenie
s parametrami, ktoré vám prístup umožní cez LAN (WAN). Tu na ďalšom
screenshote možno vidieť ako budeme derby server spúšťať. Odporúčam
spúšťať ako administrator + správca, predídeme tým problémom ohľadom
práv prístupu, ak používate systém práv na PC. Server spustíme príkazom
startNetworkServer -h 192.168.123.9 -p 2222
, kde
prepínač -h
definuje IP adresu sieťovej karty
umiestnenou na PC, kde pobeží DerbyServer a -p
definuje port, kde bude Derby server počúvať. Pretože je databaze04
obsiahnutá v celom adresári, je možné ju prenášať medzi DerbyServery
jednoduchým kopírovaním. Taktiež, ak chcete danú databázu zmazať, stačí
daný adresár zmazať a DerbyServer ani nebude tušiť, že mu nejaká
databázy chýba.
Čo sa týka WAN (internet), tak tu je samozrejme princíp úplne identický, že nestojí ani za zmienku. Proste za IP dosadíte iba verejnou (public) IP adresu vášho PC, ak je viditeľný z internetu. Prípadne ak máte NAT, je nutné v routeru nastaviť presmerovanie na port a IP v LAN. Za IP DerbyServeru dáte IP v LAN, a klient sa bude pripájať na adresu routera, ktorý potom iba vykoná automatické presmerovanie komunikácie.
Príklad na pripojenie cez LAN
Vytvoríme testovacie príklad v Java SE a projekt v IDE. Pridáme opäť externé knižnice z (.. \ lib \ ..) do nášho projektu do CLASSPATH.
- derby.jar
- derbyclient.jar
- derbytools.jar
- derbyoptionaltools.jar
Ako som už vyššie uviedol, ide o takmer identický kód z
predchádzajúceho príkladu, kedy jediná zásadný úprava bude v pripojení.
Ako vidíte, určili sme IP adresu a samozrejme port, na ktorom Derby Server
načúva.
jdbc:derby://192.168.123.9:2222/databaze04;user=Uzivatel4;password=Heslo4;
Samozrejme, ak budete používať tento kód nezabudnite moju IPv4 zmeniť za svoju 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"); } }
Tu je krásne vidieť výstup spusteného programu do konzoly. Kód je jednoduchý. Najskôr sa pripojíme, potom vykonáme výpis vybrané tabuľky a nakoniec sa odhlásime.
Spustenie sme vykonali z IDE, však nič nám nebráni vykonať export do runnable * .jar, a spustiť projekt z príkazového riadku.
Nabudúce si rozoberieme správanie embedded (vstavané) databázy.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkamiStiahnuté 445x (4.33 kB)