IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.

Štart Derby DB po sieti - DerbyDb

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.

Sieťový štart databázy DerbyDb - DerbyDb

Č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
  • derbyoptional­tools.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;

Nastavenie klienta Derby Db - DerbyDb

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.

Spustený klient Derby Db - DerbyDb

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.

Výpis Derby Db - DerbyDb

Nabudúce si rozoberieme správanie embedded (vstavané) databázy.


 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 413x (4.33 kB)

 

Predchádzajúci článok
Derby DB - Pripojenie k databaze IN-MEMORY
Všetky články v sekcii
DerbyDb
Preskočiť článok
(neodporúčame)
Derby DB - Embedded (vstavaná databázy)
Článok pre vás napísal Robert Michalovič
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Programuji převážně v Javě SE,EE a trochu nativním C a CUDA. více viz.https://cz.linkedin.com/in/robert-michalovic
Aktivity