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.
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";
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:
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!