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

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

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

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ínkamiStaženo 488x (3.74 kB)