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 4 - Derby DB - Možnosti připojení

V minulé lekci, Derby DB - Připojení k databázi, jsme se k databázi Derby z Javy připojili.

Dnešní tutoriál bude takový odpočinkový. Bude pouze předvádět různé možnosti připojení.

Spuštění databázového serveru Derby DB

Spouštění databázového serveru je samozřejmě možné i programově přes Javu. Cestu si samozřejmě musíte nastavit podle svého umístění databáze. Toto je jedno z možných řešení. Lze to samozřejmě i s parametry pro jiný port či parametrem pro připojení ze sítě, apod.

Pozn.: Nejedná se o spuštění embedded (vestavěné) DB

...
/** Zde provedeme spusteni databaze **/
try {
    Runtime.getRuntime().exec("C:\\Program Files\\JavaJDK\\db\\bin\\startNetworkServer.bat");
    System.out.println("Databaze se podarila spustit");
} catch (IOException e) {
    System.out.println("Databaze se nepodarila spustit");
    e.printStackTrace();
}
...
/** Zde provedeme vypnuti databaze  **/
try {
    Runtime.getRuntime().exec("C:\\Program Files\\JavaJDK\\db\\bin\\stopNetworkServer.bat");
    System.out.println("Databaze se podarila ukoncit");
} catch (IOException e) {
    System.out.println("Databaze se nepodarila ukoncit");
    e.printStackTrace();
}
...

Spojení s použitím java.util.Pro­perties

Pokud potřebujeme provést více spojení s různými parametry, není vhodné spojení navazovat přes jeden String. V této situace využijeme objekt Properties. Ten nám umožní definovat různé spojení podle aktuální potřeby v různých částech programu.

...
private static void pripojeniKDatabazi() {
    Properties props = new Properties();
    props.setProperty("create","true");
    props.setProperty("user","Uzivatel2");
    props.setProperty("password","Heslo2");
    try {
        connect = DriverManager.getConnection("jdbc:derby://localhost:1527/databaze02",props);
        System.out.println("Podarilo se pripojit");
        } catch (Exception e) {
        System.err.println("Nepodarilo se pripojit");
    }
}
...

Spuštění Derby DB programově na PC v rámci připojení k databázi

Následující způsob spuštění se doporučuje pro vývojáře, kteří mají databázi a samozřejmě i DerbyDB k dispozici na svém PC. V tomto případě není nutné spouštět Derby databázi, protože se spustí sama v rámci pokusu o připojení.

Pozn.: Nejedná se o spuštění embedded (vestavěné) DB.

...
private static void pripojeniKDatabazi() {
    Properties props = new Properties();
    props.setProperty("create","true");
    props.setProperty("user","Uzivatel2");
    props.setProperty("databaseName","databaze02");
    props.setProperty("password","Heslo2");
    try {
        connect = DriverManager.getConnection("jdbc:derby:",props);
        System.out.println("Podarilo se pripojit");
    } catch (Exception e) {
        System.err.println("Nepodarilo se pripojit");
    }
}
...

Příklad spojení s Properties bez manuálního spuštění databáze

Vytvoříme si projekt projekt v Eclipse. V menu zvolíme File -> New -> Java Project. Pojmenujeme projekt a nastavíme JRE Java8 (příp. 9). Dále přidáme externí knihovny (libraries) do našeho projektu, přesněji do CLASSPATH. No a nakonec si vytvoříme spouštěcí třídu se spouštěcí metodou na které si to otestujeme.

Projekt pro Derby DB v Eclipse - Derby DB

Zde je zdrojový kód projektu. Program je skutečně triviální. Ve statickém bloku si vytvoříme test na přístup k objektům z libraries vložených do CLASSPATH. Dále lze v programu vidět dvě metody, z nichž jedna se připojuje a druhá odpojuje od databáze.

package pripojeni;
import java.sql.*;
public class PripojeniDERBY {
    private static Connection connect = 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 pripojeniKDatabazi() {
        Properties props = new Properties();
        props.setProperty("create","true");
        props.setProperty("user","Uzivatel2");
        props.setProperty("databaseName","databaze02");
        props.setProperty("password","Heslo2");
        try {
            connect = DriverManager.getConnection("jdbc:derby:",props);
            System.out.println("Podarilo se pripojit");
        } catch (Exception e) {
            System.err.println("Nepodarilo se pripojit");
        }
    }

    private static void odpojimeDatabazi() {
        try {
            if (connect != null) {
                connect.close();
            }
            System.out.println("Podarilo se odpojit od databaze");
        } catch (SQLException e) {
            System.out.println("Nepodarilo se odpojit od databaze");
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        System.out.println("Start Programu");
        pripojeniKDatabazi();
        odpojimeDatabazi();
        System.out.println("Konec Programu");
    }
}

Jak vidíte, projekt se spustí, ale nastane nepříjemnost. Databáze se nám vytvoří v našem projektu, což není příliš vhodné.

Spuštění Derby Db projektu v Eclipse - Derby DB

Proto provedeme úpravy zdrojového kódu. Databázi si vytvoříme tak, že si přímo specifikujeme adresář i jméno databáze.

private static void pripojeniKDatabazi() {
    Properties props = new Properties();
    props.setProperty("create","true");
    props.setProperty("user","Uzivatel2");
    props.setProperty("password","Heslo2");
    try {
        connect = DriverManager.getConnection("jdbc:derby:C:/Program Files/JavaJDK/db/bin/databaze02",props);
        System.out.println("Podarilo se pripojit");
    } catch (Exception e) {
        System.err.println("Nepodarilo se pripojit");
    }
}

A zde je již všechno v pořádku. databaze02 vznikla na cestě C:/Program Files/JavaJDK/db/bin/.

puštění Derby Db projektu v Eclipse - Derby DB

V příští lekci, Derby DB - Připojení přes DataSource, si předvedeme spojení přes DataSource.


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 404x (3.74 kB)

 

Předchozí článek
Derby DB - Připojení k databázi
Všechny články v sekci
Derby DB
Přeskočit článek
(nedoporučujeme)
Derby DB - Připojení přes DataSource
Č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