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 Wrapper v Jave - Príprava

Doteraz sme pri práci s databázou písali kód stále dokola 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ť toľko zaoberať jazykom SQL. V tomto úvodnom dieli 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 wrapper plne zaoberať.

Vizuálne prostredie databázy

Pre 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 a v nej jednu jednoduchú tabuľku programátorovi, ktorá bude mať stĺpce id, meno, vek a jazyk. Buďto využite grafického prostredia a jednoducho si databázu a tabuľku naklikajte, alebo použite nasledujúce sql dotaz:

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

Tá sú dôležitou súčasťou každého projektu. Len riadne otestovaná aplikácie (alebo trieda, knižnica) je správne fungujúci aplikácie. Preto do tabuľky Programátor 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 Wrapper 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šenia (iba 2 úloh) je veľa dlhé a navyše, ak s databázou pracuje viac tried, bude kód duplicitné (pozri vyššie).

Riešenie s Wrapper

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šia a prehľadnejšie ktoré ten pôvodný. Zatiaľ vám to asi nič nepovie, ale nebojte, všetkých 5 úloh si pri tvorbe Wrapper 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 a v tomto balíčku si vytvoríme triedu Database.

Postup

Klikneme na priečinok 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

Potom na tento balík 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 opí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, kedy sa konečne naplno pustíme do programovania vlastného wrapper.


 

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