Skip navigation

Az adatbázist kezelő osztály

AdatbazisKezelo.java

Az adatbázis kezelésére létrehozzuk az AdatbazisKezelo osztályt. Ennek az osztálynak feladata az MySQL adatbázissal történő kommunikáció. A metódusait úgy alakítjuk ki, hogy a könyvtár adatbázison alkalmazott műveleteket szolgálja ki.

Az osztálynak két privát adattagja van: a csatlakozásra szolgáló conn és az utasítások végrehajtására szolgáló stmt.

public class AdatbazisKezelo {
    
    private Connection conn = null;
    private PreparedStatement stmt = null;
    ...

}

A konstruktor

A konstruktorban valósítjuk meg az adatbázis kapcsolatot. Az alapértelmezett konstruktor nem csinál semmi különöset, a paraméteres konstruktor viszont a paraméterértékeknek megfelelően létrehozza az adatbázis kapcsolatot. A URL-nél csak a hosztot és a portot valamint az adatbázis nevét kell megadni, a JDBC-s csatlakozás prefixét hozzáfűzzük. Ezen kívül meg kell még adni a felhasználónevet és a jelszót.

Fontos megjegyezni, hogy amikor adatbázisműveletet végzünk Java-ban mindig le kell kezelni a kivételeket. Ezt most ebben a példában nagyon egyszerűen oldjuk meg, kiíratjuk, hogy hol volt a hiba.

    public AdatbazisKezelo() {
        this.conn = null;
        this.stmt = null;
    }
    
    public AdatbazisKezelo(String url, String felhasznalonev, String jelszo) {
        
        try {
            // JDBC driver regisztralasa MySQL-hez.
            Class.forName("com.mysql.jdbc.Driver");
            
            this.conn = DriverManager.getConnection("jdbc:mysql://"+url, felhasznalonev, jelszo);
            
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
    }

Új rekord beszúrása

A rekord beszúrására egy külön metódust hozunk létre, amely paraméterül kapja a beszúrandó értékeket. Ebben a példában csak könyveket  fogunk tudni beszúrni, így csak azokat az értékeket adjuk meg, amelyek ehhez szükségesek.

A beszúráshoz létrehozunk egy PreparedStatement objektumot, hogy biztonságos módon történjen a beszúrás. A beszúrandó értékek helyére most kérdőjeleket írunk, ezután egyenként hozzákötjük az egyes oszlopokhoz tartózó értékeket (típusuk szerint). Erre szolgálnak a stmt.setString() és stmt.setInt() utasítások, melyek első paramétere azt jelöli, hogy az utasítás hanyadik oszlopához szeretnénk az értéket hozzárendelni (a sorszámozás 1-től indul). Ezt követően végrehajtjuk az utasítást. Az execute() metódus igaz értékkel tér vissza, ha egy lekérdezés adott vissza eredményt, máskülönben (adatmanipuláló utasítás esetén is) hamis értéket ad vissza.

public boolean ujKonyvetFelvisz(String konyvszam, String cim, String szerzo, String kiado, int ev) {
    
        try {
            stmt = conn.prepareStatement("INSERT INTO KONYVEK (konyvszam, cim, szerzo, kiado, ev) VALUES (?, ?, ?, ?, ?)");
            
            stmt.setString(1, konyvszam);
            stmt.setString(2, cim);
            stmt.setString(3, szerzo);
            stmt.setString(4, kiado);
            stmt.setInt(5, ev);
            
            stmt.execute();
            
        } catch (Exception ex) {
            System.out.println("Nem sikerült beszúrni a rekordot!");
            ex.printStackTrace();
        }
    
        return true;
    }

Az adatbázis lezárása

A művelet végén az adatbázist le kell zárni, erre egy külön metódust hoztunk itt létre.

public void adatbazistBezar() {
        try {
            this.conn.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

Licensed under the Creative Commons Attribution Non-commercial Share Alike License 4.0