Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

5. diel - Programovanie databázového Wrappera v Jave - Príprava

V predchádzajúcej lekcii, Databázy v Java JDBC - INSERT, UPDATE, DELETE a COUNT , sme sa naučili základné databázové operácie INSTERT, UPDATE a DELETE.

Doposiaľ sme pri práci s databázou písali kód stále dookola a vznikali nám tak duplicitné časti kódu. V dnešnom diele si preto vytvoríme náš vlastný databázový wrapper, ktorý nám v aplikáciách ušetrí prácu a my sa budeme môcť sústrediť na logiku aplikácie a nebudeme sa musieť tak zaoberať jazykom SQL. V tomto úvodnom diele ešte nebudeme vytvárať samotný wrapper, ale pripravíme si testovacie dáta, vytvoríme databázu, tabuľky a nakonfigurujeme náš projekt. Môžete teda brať tento úvodný diel ako prípravu do ďalších dielov, kde sa už budeme tvorbou wrappera plne zaoberať.

Vizuálne prostredie databázy

Na lepšie pochopenie a jednoduchšiu prácu s databázou MySQL môžete používať niektoré z grafických prostredí. Na výber máme mnoho programov. Ja vám môžem odporučiť napríklad phpMyAdmin, alebo DatAdmin. Určite existuje mnoho ďalších vývojových prostredí. Ak poznáte nejaké iné grafické prostredie a vyhovuje vám viac, než tieto nástroje, pokojne ho používajte.

Návrh databázy

Aby sme mali náš wrapper na čom vyskúšať, tak si vytvoríme databázu osoby av nej jednu jednoduchú tabuľku programatori, ktorá bude mať stĺpce id, meno, vek a jazyk. Buď využite grafické prostredie a jednoducho si databázu a tabuľku naklikajte, alebo použite nasledujúcu sql otázku:

CREATE DATABASE osoby;

CREATE TABLE `osoby`.`programatori` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`jmeno` VARCHAR( 30 ) NOT NULL ,
`vek` INT NOT NULL ,
`jazyk` VARCHAR( 20 ) NOT NULL
) ENGINE = INNODB;

Testovacie dáta

Tie sú dôležitou súčasťou každého projektu. Len riadne otestovaná aplikácia (alebo trieda, knižnica) je správne fungujúca aplikácia. Preto do tabuľky programatori vložíme 14 testovacích subjektov:

INSERT INTO  `osoby`.`programatori` (
`id` ,
`jmeno` ,
`vek` ,
`jazyk`
)
VALUES (
'null',  'James',  '23',  'java'
),
(
'null',  'Danna',  '32',  'java'
),
(
'null',  'Kaitlin',  '41',  'Pythor'
),
(
'null',  'Daniel',  '18',  'php'
),
(
'null',  'Jack',  '51',  'Delphi'
),
(
'null',  'Kaitlin',  '26',  'c#'
),
(
'null',  'Kate',  '52',  'Modula-3'
),
(
'null',  'Amy',  '38',  'java'
),
(
'null',  'Josh',  '66',  'php'
),
(
'null',  'Joe',  '39',  'Pythor'
),
(
'null',  'Matthew',  '37',  'f#'
),
(
'null',  'Gabriel',  '21',  'php'
),
(
'null',  'Lara',  '20',  'c++'
),
(
'null',  'Samantha',  '16',  'VB.net'
);

Ukážka

Teraz si ukážeme ako by sme riešili 5 jednoduchých úloh bez wrappera a ako to bude vyzerať s ním.

Bežné riešenie

Vypísanie tabuľky:

// 1)
try (Connection spojeni = DriverManager.getConnection("jdbc:mysql://localhost/osoby?user=root&password=");

        PreparedStatement dotaz = spojeni.prepareStatement("SELECT * FROM programatori");
        ResultSet vysledky = dotaz.executeQuery();) {


        while (vysledky.next()) {
                System.out.println(vysledek.getString("jmeno")+" - "+vysledek.getString("jazyk"));
        }
} catch (SQLException ex) {
        System.out.println("Chyba při komunikaci s databází");
}

Potom by sme niekde v aplikácii potrebovali vymazať jedného programátora z databázovej tabuľky:

try (Connection spojeni = DriverManager.getConnection("jdbc:mysql://localhost/slovnicek_db?user=root&password=");
        PreparedStatement dotaz = spojeni.prepareStatement("DELETE FROM programatori WHERE jmeno = ?");) {
        dotaz.setString(1, "Jack");
        int radku = dotaz.executeUpdate();
        System.out.println(radku);
} catch (SQLException ex) {
        System.out.println("Chyba při komunikaci s databází");
}

Takéto riešenie (len 2 úloh) je veľmi dlhé a navyše, pokiaľ s databázou pracuje viac tried, bude kód duplicitný (viď vyššie).

Riešenie s Wrapperom

Nasledujúci kód vykonáva s databázou hneď 5 úloh:

try {
     System.out.println("Vítejte");
     Database database = new Database("osoby", "root", "");
     int uspech1 = database.delete("osoby", "jmeno = ?", "gali");
     int uspech2 = database.delete("osoby", "id = ?", 12);
     int uspech3 = database.save("osoby", null, "Galí", 43, "PHP");
     String[] columns = {"jmeno","vek"};
     int uspech = database.update("osoby", columns, "where id = ?", "Galileo", 40, 30);
     System.out.println(uspech);
     System.out.println(uspech1);
     System.out.println(uspech2);
     System.out.println(uspech3);
     ResultSet vysledek = database.select("SELECT * FROM `osoby`", null);
     while(vysledek.next()) {
         System.out.println(vysledek.getString("jmeno")+" - "+vysledek.getString("jazyk"));
     }
} catch (SQLException ex) {
     System.out.println("chyba - "+ex.getMessage());
}

Kód je oveľa kratší a prehľadnejší ako ten pôvodný. Zatiaľ vám to asi nič nepovie, ale nebojte sa, všetkých 5 úloh si pri tvorbe wrappera popíšeme a vysvetlíme.

Založenie a príprava projektu

Vytvoríme si v NetBeans nový projekt z kategórie Java-Java Application s názvom Wrapper. Zatiaľ máme v aplikácii len jeden balíček s názvom Wrapper. Vytvoríme si preto nový balíček DB av tomto balíčku si vytvoríme triedu Database.

Postup

Klikneme na zložku Source Packages pravým tlačidlom myši a zvolíme new -> Java Package. Package nazveme DB.

Nový Java balíček - Databázy v Jave - JDBC - Databázy v Jave - JDBC

Potom na tento balíček klikneme pravým tlačidlom myši a zvolíme new -> Java Class. Triede dáme meno Database.

Nakoniec si nesmieme zabudnúť k projektu pridať ovládač MySQL JDBC Driver. Postup bol popísaný v jednom z minulých tutoriálov. Môžete ho nájsť tu

V dnešnom dieli je to všetko a ja sa na vás budem tešiť nabudúce.

V budúcej lekcii, Databázový wrapper v Jave - Tvorba triedy Query , sa konečne naplno pustíme do programovania vlastného wrappera.


 

Predchádzajúci článok
Databázy v Java JDBC - INSERT, UPDATE, DELETE a COUNT
Všetky články v sekcii
Databázy v Jave - JDBC
Preskočiť článok
(neodporúčame)
Databázový wrapper v Jave - Tvorba triedy Query
Článok pre vás napísal Milan Gallas
Avatar
Užívateľské hodnotenie:
1 hlasov
Autor se věnuje programování, hardwaru a počítačovým sítím.
Aktivity