Gyakorlati alapok III.

SQL (adatbázis)

 

JDBC-kapcsolódás és lekérdezés távoli szerveren

 

Mindezek után nincs más dolgunk, mint a fejezetek JDBC-, és SQL-tapasztalatai alapján létrehozzunk egy minta-adatbázist egy távoli SQL-szerveren.

 

www.informatika-programozas.hu - További információk!

Itt jegyezzük meg, hogy ahol van MySQL-szerver szolgáltatás, ott egyúttal elérhető PhpMyAdmin-felület is.

 

Ilyesfajta lehetőség nekem több is rendelkezésre áll, így az egyik szerveren kis erőfeszítéssel, valamint hangolgatással a PhpMyAdmin-felületen keresztül létrehoztam példa-adatbázisunk AUTO_CSOP tábláját:

 

AUTO_CSOP

auto_csop_nev

km_dij

napi_dij

NORMAL

80

5000

EXTRA

120

7500

LUXUS

300

15000

MAGNIF

1000

30000

 

A JDBC-konfiguráció során a ConnectionFactory osztályban nagyon kell figyelnünk a kapcsolódási adatok helyes megadására, amelyeket privát adatjelleg miatt nem publikálhatok, így azokat x betűkkel helyettesítem:

 

public static final String URL = "jdbc:mysql://x/x";
public static final String USER = "x";
public static final String PASSWORD = "x";

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

A kapcsolódási adatok kivételével a lenti végső kód valójában nem sokban különbözik az előző fejezetben ismertetett kódtól. Ez bizonyítja, hogy a JDBC legfelső, alkalmazásszinten üzemel.

 

Ha minden konfiguráció helyes, akkor a kód az elvárt módon és eredménnyel fog lefutni. Nézzük meg a csak kissé módosított Java-kódot:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

Main.java

 

public class Main {
public static void main(String[] args) {
    System.out.println("Kezdes OK!");
    DAO_Auto_csop dao_Auto_csop = new DAO_Auto_csop();
    dao_Auto_csop.getData();
    }
}

 

ConnectionFactory.java

 

import java.sql.*;

public class ConnectionFactory {
    public static final String URL = "jdbc:mysql://x/x";
    public static final String USER = "x";
    public static final String PASSWORD = "x";

    private static Connection connection = null;

public static Connection getConnection(){
    if (connection == null) {
        try {
            connection = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (SQLException ex) {
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
            throw new RuntimeException("Error connecting to the database", ex);
        }
    }
    return connection;
    }
}

 

Auto_csop.java

 

public class Auto_csop {
    private String auto_csop_nev;
    private Integer km_dij;
    private Integer napi_dij;

    public Auto_csop() {}

public Auto_csop(String auto_csop_nev, Integer km_dij, Integer napi_dij) {
    this.auto_csop_nev = auto_csop_nev;
    this.km_dij = km_dij;
    this.napi_dij = napi_dij;
}

public String getAuto_csop_nev() {
    return auto_csop_nev;
}

public void setAuto_csop_nev(String auto_csop_nev) {
    this.auto_csop_nev = auto_csop_nev;
}

public Integer getKm_dij() {
    return km_dij;
}

public void setKm_dij(Integer km_dij) {
    this.km_dij = km_dij;
}

public Integer getNapi_dij() {
    return napi_dij;
}

public void setNapi_dij(Integer napi_dij) {
    this.napi_dij = napi_dij;
    }
}

 

DAO_Auto_csop.java

 

import java.sql.*;

public class DAO_Auto_csop {

public void getData() {
    Connection connection = ConnectionFactory.getConnection();
    System.out.println("Connection OK!");
    try {
        Statement statement = connection.createStatement();
        System.out.println("Statement OK!");
        ResultSet resultSet = statement.executeQuery("SELECT * FROM auto_csop");
        System.out.println("Query starting!");
        while(resultSet.next()){
            Auto_csop auto_csop = new Auto_csop();
            auto_csop.setAuto_csop_nev(resultSet.getString("auto_csop_nev"));
            auto_csop.setKm_dij(resultSet.getInt("km_dij"));
            auto_csop.setNapi_dij(resultSet.getInt("napi_dij"));
            System.out.print("Autokategoria: " + auto_csop.getAuto_csop_nev()

                + " - Km dij: " + auto_csop.getKm_dij() + " - Napi dij: " + auto_csop.getNapi_dij());
            System.out.println();
        }
        resultSet.close();
        statement.close();
        connection.close();
        System.out.println("\nViszlat!");
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

 

Végeredmény a konzolban a távoli szerverről:

Kezdes OK!
Connection OK!
Statement OK!
Query starting!
Autokategoria: NORMAL - Km dij: 80 - Napi dij: 5000
Autokategoria: EXTRA - Km dij: 120 - Napi dij: 7500
Autokategoria: LUXUS - Km dij: 300 - Napi dij: 15000

Autokategoria: MAGNIF - Km dij: 1000 - Napi dij: 30000

Viszlat!