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í.

Lekce 7 - Derby DB - Připojení k databázi LAN/WAN

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.

Start Derby DB po síti - Derby DB

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í.

Síťový start databáze DerbyDb - Derby DB

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

Nastavení klienta Derby Db - Derby DB

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ý klient Derby Db - Derby DB

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.

Výpis Derby Db - Derby DB

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ínkami

Staženo 411x (4.33 kB)

 

Předchozí článek
Kvíz - DataSource a možnosti připojení Derby DB v Javě
Všechny články v sekci
Derby DB
Přeskočit článek
(nedoporučujeme)
Derby DB - Embedded (vestavěná databáze)
Článek pro vás napsal Robert Michalovič
Avatar
Uživatelské hodnocení:
2 hlasů
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