Úvod do Javy, JDBC a multimediální databáze

Rozměr: px
Začít zobrazení ze stránky:

Download "Úvod do Javy, JDBC a multimediální databáze"

Transkript

1 Úvod do Javy, JDBC a multimediální databáze Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů 1. demonstrační cvičení pro PDB 2. říjen 2015 Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

2 Obsah 1 Java, JDBC a připojení k Oracle Database 2 Uložení multimédií Práce s multimédii vč. vyhledávání Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

3 Cíle cvičení. Ukázka práce s JDBC, připojení na Oracle Database. Ukázka uložení multimédií v. Ukázka práce s multimédii přes Oracle JDBC vč. vyhledávání. Diskuze k zadání projektu a způsobu řešení. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

4 Cíle cvičení. Ukázka práce s JDBC, připojení na Oracle Database. Ukázka uložení multimédií v. Ukázka práce s multimédii přes Oracle JDBC vč. vyhledávání. Diskuze k zadání projektu a způsobu řešení. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

5 Cíle cvičení. Ukázka práce s JDBC, připojení na Oracle Database. Ukázka uložení multimédií v. Ukázka práce s multimédii přes Oracle JDBC vč. vyhledávání. Diskuze k zadání projektu a způsobu řešení. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

6 Cíle cvičení. Ukázka práce s JDBC, připojení na Oracle Database. Ukázka uložení multimédií v. Ukázka práce s multimédii přes Oracle JDBC vč. vyhledávání. Diskuze k zadání projektu a způsobu řešení. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

7 Cíle cvičení. Ukázka práce s JDBC, připojení na Oracle Database. Ukázka uložení multimédií v. Ukázka práce s multimédii přes Oracle JDBC vč. vyhledávání. Diskuze k zadání projektu a způsobu řešení. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

8 Obsah Java, JDBC a připojení k Oracle Database 1 Java, JDBC a připojení k Oracle Database 2 Uložení multimédií Práce s multimédii vč. vyhledávání Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

9 Platforma Java a její edice Java ME (Micro Edition) pro zařízení s omezenou kapacitou (např. mobilní zařízení), Java SE (Standard Edition) pro obecné použití na desktopech a serverech (základní knihovny), Java EE (Enterprise Edition) rozšířená Java SE o technologie pro vícevrstvé serverové aplikace. Do Java SE 5 (vývoj. verze 1.5) označení edicí J2ME, J2SE a J2EE. Aktuální verze jsou Java SE 8 (vývoj. verze 1.8) a Java EE 7. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

10 Platforma Java a její edice Java ME (Micro Edition) pro zařízení s omezenou kapacitou (např. mobilní zařízení), Java SE (Standard Edition) pro obecné použití na desktopech a serverech (základní knihovny), Java EE (Enterprise Edition) rozšířená Java SE o technologie pro vícevrstvé serverové aplikace. Do Java SE 5 (vývoj. verze 1.5) označení edicí J2ME, J2SE a J2EE. Aktuální verze jsou Java SE 8 (vývoj. verze 1.8) a Java EE 7. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

11 Vlastnosti jazyka Java Objektově-orientovaný jazyk, podobně jako C++, ale... Přidělování a uvolňování paměti je zde obstaráno automaticky. (objekt, na který neexistují reference, může být zrušen garbage collectorem) Nejsou ukazatele, jen hodnoty a reference na objekty. (nelze ukazovat mimo platná data, ale pozor na přístup do neexistujících objektů) Mechanismus výjimek, runtime chyby je možné odchytit a zpracovat. (výjimky jsou objekty, specializací tříd výjimek tvoří hierarchii) Mechanismus vláken (threads) a jejich synchronizace pomocí monitorů. Lze dynamicky zavádět třídy, vytvářet objekty a provádět jejich reflexi. Statická typová kontrola (norma IEEE). (stejný výsledek v různých OS, používá Unicode) Překládaná se do bytecodu, interpretuje v JVM. (nezávislost na HW/OS platformě, systémových knihovnách, atd.) Velké množství standardních knihoven. (GUI, I/O, komunikace s RDBS, práce s textem, s komprimovanými soubory, atd.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

12 Vlastnosti jazyka Java Objektově-orientovaný jazyk, podobně jako C++, ale... Přidělování a uvolňování paměti je zde obstaráno automaticky. (objekt, na který neexistují reference, může být zrušen garbage collectorem) Nejsou ukazatele, jen hodnoty a reference na objekty. (nelze ukazovat mimo platná data, ale pozor na přístup do neexistujících objektů) Mechanismus výjimek, runtime chyby je možné odchytit a zpracovat. (výjimky jsou objekty, specializací tříd výjimek tvoří hierarchii) Mechanismus vláken (threads) a jejich synchronizace pomocí monitorů. Lze dynamicky zavádět třídy, vytvářet objekty a provádět jejich reflexi. Statická typová kontrola (norma IEEE). (stejný výsledek v různých OS, používá Unicode) Překládaná se do bytecodu, interpretuje v JVM. (nezávislost na HW/OS platformě, systémových knihovnách, atd.) Velké množství standardních knihoven. (GUI, I/O, komunikace s RDBS, práce s textem, s komprimovanými soubory, atd.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

13 Vlastnosti jazyka Java Objektově-orientovaný jazyk, podobně jako C++, ale... Přidělování a uvolňování paměti je zde obstaráno automaticky. (objekt, na který neexistují reference, může být zrušen garbage collectorem) Nejsou ukazatele, jen hodnoty a reference na objekty. (nelze ukazovat mimo platná data, ale pozor na přístup do neexistujících objektů) Mechanismus výjimek, runtime chyby je možné odchytit a zpracovat. (výjimky jsou objekty, specializací tříd výjimek tvoří hierarchii) Mechanismus vláken (threads) a jejich synchronizace pomocí monitorů. Lze dynamicky zavádět třídy, vytvářet objekty a provádět jejich reflexi. Statická typová kontrola (norma IEEE). (stejný výsledek v různých OS, používá Unicode) Překládaná se do bytecodu, interpretuje v JVM. (nezávislost na HW/OS platformě, systémových knihovnách, atd.) Velké množství standardních knihoven. (GUI, I/O, komunikace s RDBS, práce s textem, s komprimovanými soubory, atd.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

14 Vlastnosti jazyka Java Objektově-orientovaný jazyk, podobně jako C++, ale... Přidělování a uvolňování paměti je zde obstaráno automaticky. (objekt, na který neexistují reference, může být zrušen garbage collectorem) Nejsou ukazatele, jen hodnoty a reference na objekty. (nelze ukazovat mimo platná data, ale pozor na přístup do neexistujících objektů) Mechanismus výjimek, runtime chyby je možné odchytit a zpracovat. (výjimky jsou objekty, specializací tříd výjimek tvoří hierarchii) Mechanismus vláken (threads) a jejich synchronizace pomocí monitorů. Lze dynamicky zavádět třídy, vytvářet objekty a provádět jejich reflexi. Statická typová kontrola (norma IEEE). (stejný výsledek v různých OS, používá Unicode) Překládaná se do bytecodu, interpretuje v JVM. (nezávislost na HW/OS platformě, systémových knihovnách, atd.) Velké množství standardních knihoven. (GUI, I/O, komunikace s RDBS, práce s textem, s komprimovanými soubory, atd.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

15 Vlastnosti jazyka Java Objektově-orientovaný jazyk, podobně jako C++, ale... Přidělování a uvolňování paměti je zde obstaráno automaticky. (objekt, na který neexistují reference, může být zrušen garbage collectorem) Nejsou ukazatele, jen hodnoty a reference na objekty. (nelze ukazovat mimo platná data, ale pozor na přístup do neexistujících objektů) Mechanismus výjimek, runtime chyby je možné odchytit a zpracovat. (výjimky jsou objekty, specializací tříd výjimek tvoří hierarchii) Mechanismus vláken (threads) a jejich synchronizace pomocí monitorů. Lze dynamicky zavádět třídy, vytvářet objekty a provádět jejich reflexi. Statická typová kontrola (norma IEEE). (stejný výsledek v různých OS, používá Unicode) Překládaná se do bytecodu, interpretuje v JVM. (nezávislost na HW/OS platformě, systémových knihovnách, atd.) Velké množství standardních knihoven. (GUI, I/O, komunikace s RDBS, práce s textem, s komprimovanými soubory, atd.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

16 Vlastnosti jazyka Java Objektově-orientovaný jazyk, podobně jako C++, ale... Přidělování a uvolňování paměti je zde obstaráno automaticky. (objekt, na který neexistují reference, může být zrušen garbage collectorem) Nejsou ukazatele, jen hodnoty a reference na objekty. (nelze ukazovat mimo platná data, ale pozor na přístup do neexistujících objektů) Mechanismus výjimek, runtime chyby je možné odchytit a zpracovat. (výjimky jsou objekty, specializací tříd výjimek tvoří hierarchii) Mechanismus vláken (threads) a jejich synchronizace pomocí monitorů. Lze dynamicky zavádět třídy, vytvářet objekty a provádět jejich reflexi. Statická typová kontrola (norma IEEE). (stejný výsledek v různých OS, používá Unicode) Překládaná se do bytecodu, interpretuje v JVM. (nezávislost na HW/OS platformě, systémových knihovnách, atd.) Velké množství standardních knihoven. (GUI, I/O, komunikace s RDBS, práce s textem, s komprimovanými soubory, atd.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

17 Vlastnosti jazyka Java Objektově-orientovaný jazyk, podobně jako C++, ale... Přidělování a uvolňování paměti je zde obstaráno automaticky. (objekt, na který neexistují reference, může být zrušen garbage collectorem) Nejsou ukazatele, jen hodnoty a reference na objekty. (nelze ukazovat mimo platná data, ale pozor na přístup do neexistujících objektů) Mechanismus výjimek, runtime chyby je možné odchytit a zpracovat. (výjimky jsou objekty, specializací tříd výjimek tvoří hierarchii) Mechanismus vláken (threads) a jejich synchronizace pomocí monitorů. Lze dynamicky zavádět třídy, vytvářet objekty a provádět jejich reflexi. Statická typová kontrola (norma IEEE). (stejný výsledek v různých OS, používá Unicode) Překládaná se do bytecodu, interpretuje v JVM. (nezávislost na HW/OS platformě, systémových knihovnách, atd.) Velké množství standardních knihoven. (GUI, I/O, komunikace s RDBS, práce s textem, s komprimovanými soubory, atd.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

18 Vlastnosti jazyka Java Objektově-orientovaný jazyk, podobně jako C++, ale... Přidělování a uvolňování paměti je zde obstaráno automaticky. (objekt, na který neexistují reference, může být zrušen garbage collectorem) Nejsou ukazatele, jen hodnoty a reference na objekty. (nelze ukazovat mimo platná data, ale pozor na přístup do neexistujících objektů) Mechanismus výjimek, runtime chyby je možné odchytit a zpracovat. (výjimky jsou objekty, specializací tříd výjimek tvoří hierarchii) Mechanismus vláken (threads) a jejich synchronizace pomocí monitorů. Lze dynamicky zavádět třídy, vytvářet objekty a provádět jejich reflexi. Statická typová kontrola (norma IEEE). (stejný výsledek v různých OS, používá Unicode) Překládaná se do bytecodu, interpretuje v JVM. (nezávislost na HW/OS platformě, systémových knihovnách, atd.) Velké množství standardních knihoven. (GUI, I/O, komunikace s RDBS, práce s textem, s komprimovanými soubory, atd.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

19 Vlastnosti jazyka Java Objektově-orientovaný jazyk, podobně jako C++, ale... Přidělování a uvolňování paměti je zde obstaráno automaticky. (objekt, na který neexistují reference, může být zrušen garbage collectorem) Nejsou ukazatele, jen hodnoty a reference na objekty. (nelze ukazovat mimo platná data, ale pozor na přístup do neexistujících objektů) Mechanismus výjimek, runtime chyby je možné odchytit a zpracovat. (výjimky jsou objekty, specializací tříd výjimek tvoří hierarchii) Mechanismus vláken (threads) a jejich synchronizace pomocí monitorů. Lze dynamicky zavádět třídy, vytvářet objekty a provádět jejich reflexi. Statická typová kontrola (norma IEEE). (stejný výsledek v různých OS, používá Unicode) Překládaná se do bytecodu, interpretuje v JVM. (nezávislost na HW/OS platformě, systémových knihovnách, atd.) Velké množství standardních knihoven. (GUI, I/O, komunikace s RDBS, práce s textem, s komprimovanými soubory, atd.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

20 Struktura zdrojového souboru package cz. v u t b r. f i t. pdb. demo1. java ; / / d i r " cz / v u t b r / f i t / pdb / demo1 / java " import java. i o. P r i n t W r i t e r ; interface Test { / no modifier => package p r i v a t e / public i n t t e s t ( P r i n t W r i t e r w r i t e r ) ; } class MyTest implements Test { private S t r i n g getmessage ( ) { / p r i v a t e => class p r i v a t e / return new S t r i n g ( " Hello, t h i s i s MyTest. t e s t method! " ) ; } public i n t t e s t ( P r i n t W r i t e r w r i t e r ) { w r i t e r. p r i n t l n ( this. getmessage ( ) ) ; return 123; } } public class Demo1Java { / / the filename should by " Demo1Java. java " public s t a t i c void main ( String args [ ] ) { i n t r e t V a l ; MyTest mytest = new MyTest ( ) ; r e t V a l = mytest. t e s t (new P r i n t W r i t e r ( System. out, true ) ) ; System. e r r. p r i n t l n ( " MyTest. t e s t r e t u r n s " + r e t V a l ) ; } } Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

21 Překlad zdrojového souboru a spuštění 1 Přepnout se do adresáře, kde začíná cesta podle balíku. (např. cd./pdb/demo1) 2 Přeložit zdrojové soubory na bytecode. (javac -classpath. cz/vutbr/fit/pdb/demo1/java/demo1java.java) 3 Spustit bytecode třídy s metodou main(...). (java -classpath. cz.vutbr.fit.pdb.demo1.java.demo1java) Předchozí příklad: $ javac classpath. cz / v u t b r / f i t / pdb / demo1 / java / Demo1Java. java $ java classpath. cz. v u t b r. f i t. pdb. demo1. java. Demo1Java Hello, t h i s i s MyTest. t e s t method! MyTest. t e s t r e t u r n s 123 Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

22 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

23 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

24 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

25 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

26 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

27 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

28 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

29 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

30 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

31 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

32 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

33 Jazyk Java Java, JDBC a připojení k Oracle Database Operátory jako v C++ (ale pouze rozšiřující auto-přetypování) Programové struktury jako v C++ (if, switch, for, do, while, break, continue, return, try, catch, finally, throw, synchronized) Datové typy... objektové (třídy) (Integer, String, InputStream, Image,... ) nebo jednoduché (byte, short, int, long, char (Unicode), float, double, boolean) Pole: int[][][] pole = new int[10][5][]; Klíčová slova pro... objekty: new, null, this, super třídy a rozhraní: class, interface, implements, abstract omezení přístupu: private, protected, public omezení platnosti: static, final atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

34 Konvence pro zdrojový kód v Javě Správné názvy a koncovky zdrojových souborů, obsah v UTF-8. (Java source *.java vs. bytecode *.class, balíky cz.vutbr.fit.pdb... ) Zarovnání kódu s každým blokem {...} nebo zalomením řádku. (odsazovat o tabulátor, případně 4 nebo 8 mezer) Správná velikost písmen v názvech identifikátorů. balíky jen malá písmena, složená jména odděleny tečkou (např. java.io, cz.vutbr.fit.pdb.demo1) třídy, rozhraní a konstruktory slova začínají velkým písmenem (např. String, StringBuffer) metody a proměnné první slovo začíná malým, další velkým pís. (např. reader, getsize(), mywidth) konstanty jen velká písmena, složená jména odděleny _ (např. MIN_WIDTH,... ; deklarovat jako static final) Strukturované komentáře pro JavaDoc. nazev trida oznaceni; komentář uvodit /**... ) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

35 Literatura k Javě Java, JDBC a připojení k Oracle Database Zdeněk Kotala, Petr Toman: Java. Bruce Eckel: Thinking in Java. ISBN Oracle: Java SE Documentation. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

36 Aplikační API pro volání SQL příkazů a dotazů. (unifikovaný přístup k databázím) Pro přístup k databázi z Java SE/EE aplikace. Pro konkrétní databázi je potřeba JDBC ovladač. (pro vytvoření spojení, pro dotazy a data specifické pro danou databázi) JDBC API je nezávislé na konkrétním systému řízení báze dat. (problém s kompatibilitou může být na úrovni jazyka SQL) Nejen pro přístup k RDBS, ale k libovolným sloupcovým datům. (např. tabulkové soubory, textové soubory, atd.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

37 Struktura zdrojového souboru s JDBC I package cz. v u t b r. f i t. pdb. demo1. jdbc ; import oracle. jdbc. pool. OracleDataSource ; import java. sql. Connection ; import java. sql. Statement ; import java. s q l. ResultSet ; import java. sql. SQLException ; class Demo1JDBC { public s t a t i c void main ( String args [ ] ) { t r y { / / create a OracleDataSource instance OracleDataSource ods = new OracleDataSource ( ) ; ods. seturl ( " jdbc : oracle : t h i n f i t. v u t b r. cz :1521: dbgort " ) ; ods. setuser ( System. getproperty ( " l o g i n " ) ) ; ods. setpassword ( System. getproperty ( " password " ) ) ; / / connect to the database Connection conn = ods. getconnection ( ) ; t r y { / / create a Statement Statement stmt = conn. createstatement ( ) ; t r y { / / select something from the system s dual table ResultSet r s e t = stmt. executequery ( Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

38 Struktura zdrojového souboru s JDBC II } " select 1+2 as col1, 3 4 as col2 from dual " ) ; t r y { / / i t e r a t e through the r e s u l t and p r i n t the values while ( r s e t. next ( ) ) { System. out. p r i n t l n ( " col1 : " + r s e t. g e t S t r i n g ( 1 ) + " \ t c o l 2 : " + r s e t. g e t S t r i n g ( 2 ) + " " ) ; } } f i n a l l y { r s e t. close ( ) ; / / close the ResultSet } } f i n a l l y { stmt. close ( ) ; / / close the Statement } } f i n a l l y { conn. close ( ) ; / / close the connection } } catch ( SQLException sqlex ) { System. e r r. p r i n t l n ( " SQLException : " + sqlex. getmessage ( ) ) ; } } Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

39 Překlad s JDBC a spuštění 1 Získat ovladač JDBC pro Oracle Database 12c pro Java 7/8. ( default html) 2 Ovladač přidat do CLASSPATH pro překlad a spuštění. (javac -classpath.:./lib/ojdbc7.jar... ) 3 V kódu odchytávat výjimky, uvolnit všechny alokované prostředky a uzavřít otevřená spojení. (pomocí catch a finally) Předchozí příklad: $ javac classpath. :. / l i b / ojdbc7. j a r \ cz / v u t b r / f i t / pdb / demo1 / jdbc /Demo1JDBC. java $ java classpath. :. / l i b / ojdbc7. j a r \ Dlogin=xnovak99 Dpassword= \ cz. v u t b r. f i t. pdb. demo1. jdbc.demo1jdbc col1 : 3 col2 : 1 Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

40 Transakce a příprava dotazů Je možno vypnout automatické ukončení transakcí a dělat ručně. (conn.setautocommit(false) a následně conn.commit()) U transakcí je možno vytvářet záchytné body... (např. Savepoint svpt1 = conn.setsavepoint("sp1"))... a následně se k bodům vracet. (např. conn.rollback(svpt1)) Je možno předpřipravit dotaz a pak doplňovat hodnoty. (zabrání útokům typu SQL injection) S t r i n g updatesql = " update COFFEES set SALES =? where COF_NAME l i k e? " ; PreparedStatement pstmt = conn. preparestatement ( updatesql ) ; pstmt. s e t I n t ( 1, 7 5 ) ; pstmt. s e t S t r i n g ( 2, " Colombian " ) ; pstmt. executeupdate ( ) ; pstmt. close ( ) ; Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

41 Literatura JDBC na Oracle Database Trail: JDBC Database Access. JDK 7 JDBC-related APIs & Developer Guides. Jan Šeda: Úvod do JDBC. Interval.cz. JDBC FI WIKI. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

42 Obsah Java, JDBC a připojení k Oracle Database Uložení multimédií Práce s multimédii vč. vyhledávání 1 Java, JDBC a připojení k Oracle Database 2 Uložení multimédií Práce s multimédii vč. vyhledávání Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

43 Uložení multimédií Práce s multimédii vč. vyhledávání Podpora pro správu multimediálních dat. (doplněk tradičních databázových systémů ) post-relační databáze) Zaručují konzistenci, souběžnost, integritu. (nutné pro bezpečnost a dostupnost dat) Manipulace s multimediálními daty. (změna velikosti obrázků, transformace, atp.) Dotazování a získávání relevantních informací z velkých kolekcí dat. (dle popisu, dle multimediálního obsahu, dle vlastností objektů) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

44 Oracle Multimedia architektura Uložení multimédií Práce s multimédii vč. vyhledávání Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

45 Multimediální data v Oracle Uložení multimédií Práce s multimédii vč. vyhledávání A) Nestrukturovaná multimédia (typy sloupců, v prostoru ORDSYS): OrdImage obrázková data (rozměry, formát souboru a obsahu, komprese; vč. metod pro manipulaci) SI_StillImage obrázková data, SQL/MM Still Image standard (pro dotazování na obsah, tzv. image matching ; bez manipulace) OrdAudio audio data (kódování, počet kanálů, velikost a frekvence vzorků, typ komprese, délka) OrdVideo video data (rozměry, rozlišení a počet snímků, délka, komprese, počet barev, bit-rate) OrdDoc libovolné multimédia (text, obrázek, audio a video) B) Meta-data k multimediálním datům. (Exif, ID3, DICOM, MPEG-7,... ) Podporuje většinu formátů (JPEG, MPEG, QT, RM,... ). Manipulace, zpracování obrazu, komprese,... Rozšiřitelné o práci s medicínskými daty, zpracování řeči, atd. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

46 SQL/MM Still Image Standard Uložení multimédií Práce s multimédii vč. vyhledávání Standard ISO/IEC :2001 SQL MM Part5: StillImage. (zaveden v Oracle 10g, dřívější OrdImageSignature je od Oracle 11g zavržen) Umožňuje uložit obrázek z dat typu BLOB do dat typu SI_StillImage. (z takových dat lze získat SI_... funkcemi výšku, šířku či formát obrázku, BLOB obsah či SI_StillImage náhled daných rozměrů) Poskytuje SI_... objekty zachycující charakteristiku obrázku: SI_AverageColor průměrná (celková) barva obrázku SI_ColorHistogram histogram (statistické rozložení) barev obrázku SI_PositionalColor umístění (nejvýznamnějších) barev v obrázku SI_Texture opakující se vzory, variace kontrastu a směry v obrázku Možno sestavit objekt SI_FeatureList kombinující výše uvedené charakteristiky obrázku s danými vahami (váhy 0,0 až 1,0 pro každou). Funkce SI_ScoreByFtrList vyhodnotí, jak pasuje daná kombinace charakteristik SI_FeatureList na daný obrázek SI_StillImage. (používá se pro hledání podobných obrázků, jak bude popsáno dále) Databáze neumí úpravy SI_StillImage obrázku a nenabízí Java API. (na rozdíl od obrázků v OrdImage, které lze otáčet, měnit velikost, atp.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

47 Uložení multimédií Práce s multimédii vč. vyhledávání Tvorba tabulky obrázků a generování charakteristik DROP TABLE products ; CREATE TABLE products ( i d integer primary key, photo ORDSYS. ORDImage, photo_si ORDSYS. SI_ StillImage, photo_ac ORDSYS. SI_AverageColor, photo_ch ORDSYS. SI_ColorHistogram, photo_pc ORDSYS. SI_ PositionalColor, photo_tx ORDSYS. SI_Texture ) ; CREATE OR REPLACE PROCEDURE products_generatefeatures IS cursor c i s select from products f o r update ; s i ORDSYS. SI_ StillImage ; BEGIN f o r cp in c loop s i := new S I _ S t i l l I m a g e ( cp. photo. getcontent ( ) ) ; update products p set photo_si = si, photo_ac = SI_AverageColor ( s i ), photo_ch = SI_ColorHistogram ( s i ), photo_pc = SI_ PositionalColor ( s i ), photo_tx = SI_Texture ( s i ) where p. i d = cp. i d ; end loop ; END; / 1 Získáme obrázek a jeho charakteristiky do proměnných pomocí select...for update. 2 Použijeme konstruktory objektů SI_... na BLOB obrázku. 3 Uložíme takto získané charakteristiky zpět do tabulky k danému obrázku. (např. pomocí products_generatefeatures, ale lepší přímo v Javě při vkládání obrázků) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

48 Uložení multimédií Práce s multimédii vč. vyhledávání Práce s objekty Oracle Multimedia v Javě ORDSYS.ORDImage (DB) vs. oracle.ord.im.ordimage (Java) objekt: OrdImage je Java objekt. OrdImage je proxy pro databázový objekt. OrdImage musí být vytvořeno z db. ORDSYS.ORDImage. (všechny operace s objektem jsou převáděny do databáze) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

49 Vkládání obrázků v Javě I Uložení multimédií Práce s multimédii vč. vyhledávání package cz. v u t b r. f i t. pdb. demo1.mm; import oracle. jdbc. pool. OracleDataSource ; import java. s q l. ; import oracle. jdbc. ; import oracle. ord. im. ; import java. i o. IOException ; class Demo1MmInsert { public s t a t i c void main ( String args [ ] ) throws IOException, SQLException { / / create a OracleDataSource instance OracleDataSource ods = new OracleDataSource ( ) ; ods. seturl ( " jdbc : o racle : t h i n f i t. v u t b r. cz :1521: dbgort " ) ; ods. setuser ( System. getproperty ( " l o g i n " ) ) ; ods. setpassword ( System. getproperty ( " password " ) ) ; / / connect to the database Connection conn = ods. getconnection ( ) ; conn. setautocommit ( false ) ; / / f o r a l l p i c t u r e s car1. jpg... car4. jpg for ( i n t i d = 1; i d <= 4; i d ++) { Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

50 Vkládání obrázků v Javě II Uložení multimédií Práce s multimédii vč. vyhledávání / / i n s e r t a new record with an empty ORDImage object Statement stmt1 = conn. createstatement ( ) ; S t r i n g insertsql = " i n s e r t i n t o products ( id, photo ) values " + " ( " + i d + ", ordsys. ordimage. i n i t ( ) ) " ; stmt1. executeupdate ( insertsql ) ; stmt1. close ( ) ; / / r e t r i e v e the p r e v i o u s l y created ORDImage o b j e c t f o r f u t u r e updating Statement stmt2 = conn. createstatement ( ) ; String selsql = " select photo from products where id = " + id + " f o r update " ; OracleResultSet r s e t = ( OracleResultSet ) stmt2. executequery ( selsql ) ; r s e t. next ( ) ; OrdImage imgproxy = ( OrdImage ) r s e t. getoradata ( " photo ", OrdImage. getoradatafactory ( ) ) ; r s e t. close ( ) ; stmt2. close ( ) ; / / load the media data from a f i l e to the ORDImage Java object imgproxy. loaddatafromfile ( ". / car " + i d + ". jpg " ) ; / / set the p r o p e r t i e s of the Oracle Mm o b j e c t from the Java o b j e c t imgproxy. s e t P r o p e r t i e s ( ) ; / / update the table with ORDImage Java object ( data already loaded ) String updatesql1 = " update products set " + " photo=? where id = " + id ; Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

51 Vkládání obrázků v Javě III Uložení multimédií Práce s multimédii vč. vyhledávání OraclePreparedStatement pstmt = ( OraclePreparedStatement ) conn. preparestatement ( updatesql1 ) ; pstmt. setoradata ( 1, imgproxy ) ; pstmt. executeupdate ( ) ; pstmt. close ( ) ; / / update the t a b l e with S t i l l I m a g e o b j e c t and f e a t u r e s Statement stmt3 = conn. createstatement ( ) ; String updatesql2 = " update products p set " + " p. photo_si= S I _ S t i l l I m a g e ( p. photo. getcontent ( ) ) where i d = " + i d ; stmt3. executeupdate ( updatesql2 ) ; String updatesql3 = " update products p set " + " p. photo_ac=si_averagecolor ( p. photo_si ), " + " p. photo_ch=si_colorhistogram ( p. photo_si ), " + " p. photo_pc= S I _ P o s i t i o n a l C o l o r ( p. photo_si ), " + " p. photo_tx=si_texture ( p. photo_si ) where id = " + id ; stmt3. executeupdate ( updatesql3 ) ; stmt3. close ( ) ; } conn. commit ( ) ; / / commit the t h r a n s a c t i o n } conn. close ( ) ; / / close the connection } Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

52 Uložení multimédií Práce s multimédii vč. vyhledávání Překlad s Oracle Multimedia a spuštění 1 Z webu cvičení stáhnout knihovny ordmi.jar a runtime12.jar. ( oracle.ordim/ordim.jar a.../runtime12.jar) 2 Knihovny přidat do CLASSPATH pro překlad a spuštění. (javac -classpath...:./lib/ordim.jar:./lib/runtime12.jar... ) Předchozí příklad: $ javac classpath. :. / l i b / ojdbc7. j a r :. / l i b / ordim. j a r \ cz / v u t b r / f i t / pdb / demo1 /mm/ Demo1MmInsert. java $ java classpath. :. / l i b / ojdbc7. j a r :. / l i b / ordim. j a r :. / l i b / runtime12. j a r \ Dlogin=xnovak99 Dpassword= \ cz. v u t b r. f i t. pdb. demo1.mm. Demo1MmInsert Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

53 Uložení multimédií Práce s multimédii vč. vyhledávání Získávání multimédií z databáze a jejich vlastnosti I package cz. v u t b r. f i t. pdb. demo1.mm; import oracle. jdbc. pool. OracleDataSource ; import java. s q l. ; import oracle. jdbc. ; import oracle. ord. im. ; import java. i o. IOException ; class Demo1MmProp { public s t a t i c void main ( String args [ ] ) throws IOException, SQLException { / / create a OracleDataSource instance OracleDataSource ods = new OracleDataSource ( ) ; ods. seturl ( " jdbc : o racle : t h i n f i t. v u t b r. cz :1521: dbgort " ) ; ods. setuser ( System. getproperty ( " l o g i n " ) ) ; ods. setpassword ( System. getproperty ( " password " ) ) ; / / connect to the database Connection conn = ods. getconnection ( ) ; / / create a JDBC statement to select ODRImage objects from db. Statement stmt = conn. createstatement ( ) ; / / execute the query and obtain the r e s u l t set OracleResultSet r s e t = ( OracleResultSet ) stmt. executequery ( " select id, photo from products " ) ; Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

54 Uložení multimédií Práce s multimédii vč. vyhledávání Získávání multimédií z databáze a jejich vlastnosti II / / r e t r i e v e the ORDImage o b j e c t s from the r e s u l t set while ( r s e t. next ( ) ) { i n t i d = r s e t. g e t I n t ( " i d " ) ; OrdImage imgproxy = ( OrdImage ) r s e t. getoradata ( " photo ", OrdImage. getoradatafactory ( ) ) ; / / r e t r i e v e the media a t t r i b u t e s i n t height = imgproxy. getheight ( ) ; i n t width = imgproxy. getwidth ( ) ; System. out. p r i n t l n ( " Photo " + i d + " : " + height + " x " + width ) ; / / w r i t e the media to disk imgproxy. g e t D a t a I n F i l e ( ". / car " + i d + " out. jpg " ) ; } / / close the r e s u l t set and the query r s e t. close ( ) ; stmt. close ( ) ; } conn. close ( ) ; / / close the connection } Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

55 Uložení multimédií Práce s multimédii vč. vyhledávání Překlad a spuštění příkladu pro získání z databáze Do databáze předchozím příkladem nahrány následující obrázky: Překlad a spuštění příkladu: $ javac classpath. :. / l i b / ojdbc7. j a r :. / l i b / ordim. j a r \ cz / v u t b r / f i t / pdb / demo1 /mm/ Demo1MmProp. java $ java classpath. :. / l i b / ojdbc7. j a r :. / l i b / ordim. j a r :. / l i b / runtime12. j a r \ Dlogin=xnovak99 Dpassword= \ cz. v u t b r. f i t. pdb. demo1.mm. Demo1MmProp Photo 1: 371x600 Photo 2: 374x600 Photo 3: 378x600 Photo 4: 377x600 Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

56 Uložení multimédií Práce s multimédii vč. vyhledávání Operace s multimédii v databázi přes Java proxy I package cz. v u t b r. f i t. pdb. demo1.mm; import oracle. jdbc. pool. OracleDataSource ; import java. s q l. ; import oracle. jdbc. ; import oracle. ord. im. ; import java. i o. IOException ; class Demo1MmConvert { public s t a t i c void main ( String args [ ] ) throws IOException, SQLException { / / create a OracleDataSource instance OracleDataSource ods = new OracleDataSource ( ) ; ods. seturl ( " jdbc : o racle : t h i n f i t. v u t b r. cz :1521: dbgort " ) ; ods. setuser ( System. getproperty ( " l o g i n " ) ) ; ods. setpassword ( System. getproperty ( " password " ) ) ; / / connect to the database Connection conn = ods. getconnection ( ) ; conn. setautocommit ( false ) ; / / i n s e r t a new record with an empty ORDImage object Statement stmt1 = conn. createstatement ( ) ; S t r i n g insertsql = " i n s e r t i n t o products ( id, photo ) values " + " ( 5, ordsys. ordimage. i n i t ( ) ) " ; Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

57 Uložení multimédií Práce s multimédii vč. vyhledávání Operace s multimédii v databázi přes Java proxy II stmt1. executeupdate ( insertsql ) ; stmt1. close ( ) ; / / r e t r i e v e the p r e v i o u s l y created ORDImage o b j e c t f o r updating Statement stmt2 = conn. createstatement ( ) ; String selsql1 = " select photo from products where id = 5 f o r update " ; OracleResultSet r s e t 1 = ( OracleResultSet ) stmt2. executequery ( selsql1 ) ; r s e t 1. next ( ) ; OrdImage dstimgproxy = ( OrdImage ) r s e t 1. getoradata ( " photo ", OrdImage. getoradatafactory ( ) ) ; r s e t 1. close ( ) ; stmt2. close ( ) ; / / r e t r i e v e ORDImage o b j e c t of a source image Statement stmt3 = conn. createstatement ( ) ; String selsql2 = " select photo from products where id = 1 " ; OracleResultSet r s e t 2 = ( OracleResultSet ) stmt3. executequery ( selsql2 ) ; r s e t 2. next ( ) ; OrdImage srcimgproxy = ( OrdImage ) r s e t 2. getoradata ( " photo ", OrdImage. getoradatafactory ( ) ) ; r s e t 2. close ( ) ; stmt3. close ( ) ; / / perform conversion ( processing occurs on the Oracle Database ) srcimgproxy. processcopy ( " maxscale= f i l e f o r m a t =png ", dstimgproxy ) ; Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

58 Uložení multimédií Práce s multimédii vč. vyhledávání Operace s multimédii v databázi přes Java proxy III / / save the t a r g e t image OraclePreparedStatement pstmt = ( OraclePreparedStatement ) conn. preparestatement ( " update products set photo=? where id = 5 " ) ; pstmt. setoradata ( 1, dstimgproxy ) ; pstmt. executeupdate ( ) ; pstmt. close ( ) ; / / update the t a r g e t image with S t i l l I m a g e o b j e c t and f e a t u r e s Statement stmt4 = conn. createstatement ( ) ; String updatesql1 = " update products p set " + " p. photo_si= S I _ S t i l l I m a g e ( p. photo. getcontent ( ) ) where i d = 5 " ; stmt4. executeupdate ( updatesql1 ) ; String updatesql2 = " update products p set " + " p. photo_ac=si_averagecolor ( p. photo_si ), " + " p. photo_ch=si_colorhistogram ( p. photo_si ), " + " p. photo_pc= S I _ P o s i t i o n a l C o l o r ( p. photo_si ), " + " p. photo_tx=si_texture ( p. photo_si ) where id = 5 " ; stmt4. executeupdate ( updatesql2 ) ; stmt4. close ( ) ; } } dstimgproxy. g e t D a t a I n F i l e ( ". / car5 out. png " ) ; conn. commit ( ) ; conn. close ( ) ; / / commit and close the connection Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

59 Uložení multimédií Práce s multimédii vč. vyhledávání Překlad a spuštění příkladu pro operace Databáze transformuje a překonvertuje první obrázek: 1 ) 5 Překlad a spuštění příkladu: $ javac classpath. :. / l i b / ojdbc7. j a r :. / l i b / ordim. j a r \ cz / v u t b r / f i t / pdb / demo1 /mm/ Demo1MmConvert. java $ java classpath. :. / l i b / ojdbc7. j a r :. / l i b / ordim. j a r :. / l i b / runtime12. j a r \ Dlogin=xnovak99 Dpassword= \ cz. v u t b r. f i t. pdb. demo1.mm. Demo1MmConvert Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

60 Uložení multimédií Práce s multimédii vč. vyhledávání JDBC a ostatní multimédia z Oracle Database S dalšími typy multimédií pracujeme podobně, jako s OrdImage: OrdImage imgproxy = ( OrdImage ) r s e t. getoradata ( " product_photo ", OrdImage. getoradatafactory ( ) ) ; OrdAudio audproxy = ( OrdAudio ) r s e t. getoradata ( " product_audio ", OrdAudio. getoradatafactory ( ) ) ; OrdVideo vidproxy = ( OrdVideo ) r s e t. getoradata ( " product_video ", OrdVideo. getoradatafactory ( ) ) ; OrdDoc docproxy = ( OrdDoc ) r s e t. getoradata ( " product_ testimonials ", OrdDoc. getoradatafactory ( ) ) ; Jednotlivé typy mají specifické vlastnosti: String audformat = audproxy. getformat ( ) ; S t r i n g vidmimetype = vidproxy. getmimetype ( ) ; Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

61 Podobnostní vyhledávání Uložení multimédií Práce s multimédii vč. vyhledávání Podobnost obrázků lze zjistit voláním SI_ScoreByFtrList. (starší způsob přes OrdImageSignature v Oracle 11g nefunguje) Podobnost lze zjišt ovat pouze pro obrázky v SI_StillImage. (pokud není k dispozici, tak vytvořit konstruktorem SI_StillImage z OrdImage, resp. z BLOBu získaného pomocí...source.localdata) Podobnost mezi obrázkem a charakteristikami dalšího obrázku. (charakteristiky možno generovat v dotazu, ale rychlejší z před-připravených) Příklad: SELECT src. i d as source, dst. i d as d e s t i n a t i o n, SI_ScoreByFtrList ( new S I _ F e a t u r e L i s t ( src. photo_ac, 0. 3, src. photo_ch, 0. 3, src. photo_pc, 0. 1, src. photo_tx, 0. 3 ), dst. photo_si ) as s i m i l a r i t y FROM products src, products dst WHERE src. i d <> dst. i d AND src. i d = 1 ORDER BY s i m i l a r i t y ASC; Výsledek: 1 ) 3(8.02), 4(12.25), 2(13.83). Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

62 Literatura Oracle Multimedia Uložení multimédií Práce s multimédii vč. vyhledávání Oracle Multimedia Application Development. Oracle intermedia User s Guide Application Development. websrvtier.htm Oracle Multimedia Sample Applications. David Krch: Oracle a multimédia?. Databázový svět. Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

63 FAQ I FAQ Poděkování a otázky 1 Je nutno před každým dotazem otevírat spojení a po něm ho zavírat? (Rozhodně to není nutné a ani doporučované. Je dobré mít v aplikaci stále otevřené spojení, např. ho otevřít po přihlášení uživatele, a to používat. U serverových aplikací se dokonce vytváří množina otevřených spojení, tvz. pool, a ty se postupně recyklují.) 2 Proč se musí vždy nejprve získat z databáze (i prázdný) obrázek a pak, po načtení souboru v Javě nebo provedení operací do databáze zpět ukládat? Vždyt je první krok zbytečný. (Uvědomte si, že v Javě pracujeme pouze s proxy na obrázek, který je ve skutečnosti v databázi. Proto je nutno ho v té databázi nejprve inicializovat vytvořit databázový objekt, který však bude uložen do tabulky až při závěrečném update.) 3 Jak určíme prahovou hodnotu pro funkci SI_ScoreByFtrList? A jak správně nastavit váhy? (Obojí se nejlépe určí experimentálně, nad vhodnými testovacími daty.) Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

64 FAQ Poděkování a otázky Děkuji za pozornost. Otázky? Diskuze? Marek Rychlý Úvod do Javy, JDBC a multimediální databáze 1. demonstrační cvičení pro PDB, 2. říjen / 40

Úvod do Javy, JDBC a multimediální databáze

Úvod do Javy, JDBC a multimediální databáze Úvod do Javy, JDBC a multimediální databáze Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů 1. demonstrační cvičení pro PDB 2. říjen 2015 Marek Rychlý

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Seminář Java II p.1/43

Seminář Java II p.1/43 Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii

Více

Semináˇr Java X JDBC Semináˇr Java X p.1/25

Semináˇr Java X JDBC Semináˇr Java X p.1/25 Seminář Java X JDBC Seminář Java X p.1/25 Úvod JDBC API poskytuje základní rozhraní pro unifikovaný přístup k databázím Programátor je odstíněn od specifického API databáze Jednotné rozhraní JDBC pro všechny

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Typ 2 - připojení prostřednictvím kódu nativního klienta pro přístup k síti

Typ 2 - připojení prostřednictvím kódu nativního klienta pro přístup k síti Práce s databází Specifikace JDBC Pro práci s relačními databázemi poskytuje Java rozhraní JDBC Java Database Connectivity. Specifikace tohoto rozhraní má několik verzí. Verze 1.x je součástí SDK již od

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

Úvodní informace. Petr Hnětynka  2/2 Zk/Z JAVA Úvod Úvodní informace Petr Hnětynka hnetynka@d3s.mff.cuni.cz http://d3s.mff.cuni.cz/~hnetynka/java/ 2/2 Zk/Z zkouška písemný test zápočet zápočtový test u počítače max 5 opakování zápočtový program

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

Z. Kotala, P. Toman: Java ( Obsah )

Z. Kotala, P. Toman: Java ( Obsah ) Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například

Více

Java Výjimky Java, zimní semestr

Java Výjimky Java, zimní semestr Java Výjimky 1 Výjimky (exceptions) hlášení a ošetření chyb výjimka signalizuje nějaký chybový stav výjimka = instance třídy java.lang.throwable dvě podtřídy java.lang.error a java.lang.exception konkrétní

Více

1. Téma 12 - Textové soubory a výjimky

1. Téma 12 - Textové soubory a výjimky 1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se

Více

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu Seminář Java Zavádění tříd Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Zavádění tříd 1/ 16 JVM zavádí třídy dynamicky Class loader objekt schopný zavádět třídy abstraktní

Více

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Návrh a tvorba WWW stránek 1/14. PHP a databáze Návrh a tvorba WWW stránek 1/14 PHP a databáze nejčastěji MySQL součástí balíčků PHP navíc podporuje standard ODBC PHP nemá žádné šablony pro práci s databází princip práce s databází je stále stejný opakované

Více

RMI Remote Method Invocation

RMI Remote Method Invocation 2. cvičení RMI Remote Method Invocation 2007/09 ver.2.0 1 RMI co to je? vyvolání metody z jiné JVM lokalizace vzdáleného objektu komunikace se vzdálenými objekty přenos objektu v bytecode typicky klient

Více

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky popište stav paměti

Více

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Úvod do programování v jazyce Java

Úvod do programování v jazyce Java Úvod do programování v jazyce Java Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci 5. říjen, 2011 Petr Krajča (UP) KMI/UP3J: Seminář I. 5.10.2011 1 / 17 Organizační informace email: petr.krajca@upol.cz

Více

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem

Více

Generické programování

Generické programování Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =

Více

Proměnné a datové typy

Proměnné a datové typy Proměnné a datové typy KAPITOLA 2 V této kapitole: Primitivní datové typy Proměnné Opakování Mezi základní dovednosti každého programátora bezesporu patří dobrá znalost datových typů. Ta vám umožní efektivní

Více

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20 Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................

Více

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší

Více

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

Úvodní informace. Petr Hnětynka  2/2 Zk/Z JAVA Úvod Úvodní informace Petr Hnětynka hnetynka@d3s.mff.cuni.cz http://d3s.mff.cuni.cz/~hnetynka/java/ 2/2 Zk/Z zkouška písemný test zápočet zápočtový test u počítače max 5 opakování zápočtový program

Více

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25 Seminář Java Výjimky Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Výjimky 1/ 25 Výjimky Co a k čemu jsou výjimky výjimka je mechanizmus umožňující psát robustní, spolehlivé

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

Soubor jako posloupnost bytů

Soubor jako posloupnost bytů Soubory Soubor je množina údajů uložená ve vnější paměti počítače, obvykle na disku Pro soubor jsou typické tyto operace. otevření souboru čtení údaje zápis údaje uzavření souboru Přístup k údajům (čtení

Více

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS 7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13

Více

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS 7. Integrita a bezpečnost dat v DBS 7.1. Implementace integritních omezení... 2 7.1.1. Databázové triggery... 5 7.2. Zajištění bezpečnosti dat... 12 7.2.1. Bezpečnostní mechanismy poskytované SŘBD... 13

Více

Java a Caché IV: Manipulace s objekty

Java a Caché IV: Manipulace s objekty 1 z 6 11.1.2007 11:13 přihlašovací jméno heslo Registrace Přihlásit články odkazy aktuality CZJUG konference o portálu přidejte se o nás Vyhledávání Text: najdi Oborový filtr J2ME J2SE J2EE Enterprise

Více

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University,

Více

Prostorové a XML databáze

Prostorové a XML databáze Prostorové a Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů 2. demonstrační cvičení pro PDB 9. říjen 2015 Marek Rychlý Prostorové a 2. demonstrační

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

4. lekce Přístup k databázi z vyššího programovacího jazyka

4. lekce Přístup k databázi z vyššího programovacího jazyka 4. lekce Přístup k databázi z vyššího programovacího jazyka Studijní cíl Tento blok popisuje základní principy přístupu k databázi z vyššího programovacího jazyka. Doba nutná k nastudování 2-3 hodiny Průvodce

Více

Optimalizace dotazů a databázové transakce v Oracle

Optimalizace dotazů a databázové transakce v Oracle Optimalizace dotazů a databázové transakce v Oracle Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Demo-cvičení pro IDS 22. dubna 2015 Marek Rychlý

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní Základy jazyka C# doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Architektura.NET Historie Vlastnosti

Více

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL o proceduralitu od společnosti ORACLE je jazyk

Více

14.4.1. Typický prvek kolekce pro české řazení

14.4.1. Typický prvek kolekce pro české řazení 14.4. Co všechno by měl mít typický prvek kolekce 177 Poznámka: Třídy BigInteger, BigDecimal a Date budou vysvětleny v částech [15./183, [16./185 a [18.1./204. 14.4.1. Typický prvek kolekce pro české řazení

Více

Úvod do programování - Java. Cvičení č.4

Úvod do programování - Java. Cvičení č.4 Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

7. Datové typy v Javě

7. Datové typy v Javě 7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů

Více

Vláknové programování část V

Vláknové programování část V Vláknové programování část V Lukáš Hejmánek, Petr Holub {xhejtman,hopet@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2014 03 25 1/25 Přehled přednášky Paměťový model Javy GUI v Javě Vlákna

Více

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5); Programovací jazyk PHP doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Třídy a objekty Výjimky Webové aplikace

Více

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 7 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň - ternární

Více

První kapitola úvod do problematiky

První kapitola úvod do problematiky První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports , Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Demo-cvičení pro IDS 9. dubna 2014 Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006-2007 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

Regulární výrazy. Vzory

Regulární výrazy. Vzory Regulární výrazy Regulární výrazy jsou určeny pro práci s textovými řetězci, jsou součástí J2SDK až od verze 1.4, v předchozích verzích je potřeba použít některou z externích knihoven, např. knihovnu ORO

Více

Java - výjimky. private void vstup() throws IOException {... }

Java - výjimky. private void vstup() throws IOException {... } Java - výjimky Tato kapitola ukazuje na několika příkladech práci s výjimkami v Javě. Klíčové pojmy: Výjimka, hierarchie výjimek, zachytávání výjimek, blok try-catch, tvorba vlastních výjimek, propagace

Více

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská Embedded SQL v C/C++ úvod Administrace Oracle Kateřina Opočenská Motivace potřeba začlenit komunikaci s databází do aplikace v nějakém vyšším programovacím jazyce řešení (na Oracle): a) OCI (Oracle Call

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června 2007. krovacek@students.zcu.cz

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června 2007. krovacek@students.zcu.cz Databáze čajových sáčků Martina Málková Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky Databázové systémy 2 9. června 2007 krovacek@students.zcu.cz 1 1 Datová analýza V původním

Více

17. Projekt Trojúhelníky

17. Projekt Trojúhelníky Projekt Trojúhelníky strana 165 17. Projekt Trojúhelníky 17.1. Základní popis, zadání úkolu Pracujeme na projektu Trojúhelníky, který je ke stažení na java.vse.cz. Aplikace je napsána s textovým uživatelským

Více

Databáze I. Přednáška 7

Databáze I. Přednáška 7 Databáze I Přednáška 7 Objektové rozšíření SQL Objektově relační databáze SQL:1999 objektové rozšíření SQL vztahuje se k objektově relačním databázovým systémům ukládají objekty do relační databáze umožňují

Více

Objektově orientované programování v PHP 5. Martin Klíma

Objektově orientované programování v PHP 5. Martin Klíma Objektově orientované programování v PHP 5 Martin Klíma OOP & PHP 5 V PHP 5 konečně značné rozšíření OOP Blíží se to moderním programovacím jazykům jako Java nebo C# Výhody OOP Zapouzdření (nové modifikátory

Více

Vytváření a použití knihoven tříd

Vytváření a použití knihoven tříd Vytváření a použití knihoven tříd doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Prostory jmen motivace spolupráce

Více

3 KTE / ZPE Informační technologie

3 KTE / ZPE Informační technologie 3 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Komentáře

Více

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu. Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus

Více

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd 7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená

Více

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011 Technologie Java Enterprise Edition Přemek Brada, KIV ZČU 8.6.2011 Přehled tématu Motivace a úvod Infrastruktura pro velké Java aplikace (Java základní přehled) Části třívrstvé struktury servlety, JSP

Více

Úvodní informace. Petr Hnětynka 2/2 Zk/Z

Úvodní informace. Petr Hnětynka   2/2 Zk/Z JAVA Úvod Úvodní informace Petr Hnětynka hnetynka@d3s.mff.cuni.cz http://d3s.mff.cuni.cz/~hnetynka/java/ 2/2 Zk/Z zkouška písemný test zápočet zápočtový test u počítače zápočtový program "rozumná" velikost

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

Object-relational mapping (JPA, Hibernate)

Object-relational mapping (JPA, Hibernate) Vysoká škola báňská - technická univerzita Ostrava 17. března 2010 Obsah 1 2 3 4 namapovat chování objektového světa do relačních struktur a naopak, tak aby spolu mohli jednoduše komunikovat většina moderních

Více

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text()); Anotace a Hibernate Aleš Nosek, Ondřej Vadinský, Daniel Krátký Anotace v Javě Anotace jsou novinkou v Javy verze 5. Anotace umožňují doplnit kód Javy o dodatečné informace. Zapisují se přímo do zdrojového

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45 KMI / TMA Tvorba mobilních aplikací 6. seminář 2.11.2016 ZS 2016/2017 Středa 13:15-15:45 OBSAH SEMINáře Ukládání dat Ukládání dat Jaké jsou možnosti? SharedPreferences jednoduchá data databáze SQLite relační

Více

KIV/PIA 2013 Jan Tichava

KIV/PIA 2013 Jan Tichava KIV/PIA 2013 Jan Tichava Java EE JSF, PrimeFaces Spring JPA, EclipseLink Java Platform, Enterprise Edition Persistence Zobrazovací vrstva Interakce aplikací Deployment Java Persistence API Enterprise

Více

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová Programové konvence, dokumentace a ladění 2. přednáška Alena Buchalcevová Proč dodržovat programové konvence? velkou část životního cyklu softwaru tvoří údržba údržbu provádí většinou někdo jiný než autor

Více

Jazyk C# (seminář 6)

Jazyk C# (seminář 6) Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí

Více

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Java Cvičení 01.  CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Java Cvičení 01 http://d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Příklady - Porovnání Co kód vypíše? package cz.cuni.mff.java.example01.tests; public class Test01

Více

8. přednáška: Soubory a proudy

8. přednáška: Soubory a proudy 8. přednáška: Soubory a proudy Soubor jako posloupnost bytů Ukládání/čtení primitivních typů Ukládání/čtení primitivních typů a objektů (řetězců) Ukládání/čtení objektů do souboru - serializace Obsah Algoritmizace

Více

O Apache Derby detailněji. Hynek Mlnařík

O Apache Derby detailněji. Hynek Mlnařík O Apache Derby detailněji Hynek Mlnařík Agenda Historie Vlastnosti Architektura Budoucnost Historie 1997 Cloudscape Inc. - JBMS 1999 Informix Software, Inc. odkoupila Cloudscape, Inc. 2001 IBM odkoupila

Více

Prostorové a XML databáze

Prostorové a XML databáze Prostorové a Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů 2. demonstrační cvičení pro PDB 9. říjen 2015 Marek Rychlý Prostorové a 2. demonstrační

Více

6. PRÁCE S DATOVÝMI PROUDY

6. PRÁCE S DATOVÝMI PROUDY 6. PRÁCE S DATOVÝMI PROUDY Balík java.io obsahuje třídy, které slouží pro zpracování datových výstupů a vstupů. Pro obvyklou práci se soubory zde můžeme najít třídy File a RandomAccessFile. Většina tříd

Více

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4. Základy programování 4 - C# - 9. cvičení Radek Janoštík Univerzita Palackého v Olomouci 10.4.2017 Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.2017 1 / 13 Reakce na

Více

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer Jalapeño: pekelně ostrá Java persistence v Caché Daniel Kutáč Senior Sales Engineer Co je Jalapeño Pár slov ředitele vývoje software Klikni! Tak tedy, o čem dnes budeme mluvit Architektura Instalace Anotace

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,

Více

Michal Krátký, Miroslav Beneš

Michal Krátký, Miroslav Beneš Databázové a informační systémy Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava 5.12.2005 2005 Michal Krátký, Miroslav Beneš Databázové a informační systémy 1/24 Obsah

Více

Projekty pro výuku programování v jazyce Java

Projekty pro výuku programování v jazyce Java JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil

Více

Jazyk C# - přístup k datům

Jazyk C# - přístup k datům Jazyk C# - přístup k datům Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Data Reader BI-PCS Evropský sociální fond Praha & EU:

Více

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.

Více

Textové soubory. alg9 1

Textové soubory. alg9 1 Textové soubory Textový soubor je posloupnost znaků členěná na řádky každý znak je reprezentován jedním bytem, jehož obsah je dán nějakým kódováním znaků členění na řádky je závislé na platformě a obvykle

Více

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více