[[oktatas:programozas:java:java adatbázis|< Java adatbázis]]
====== Több interfész használata ======
* **Szerző:** Sallai András
* Copyright (c) 2020, Sallai András
* Szerkesztve: 2020, 2021, 2023
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Tervek =====
A következő tervben az adatok három helyről jöhetnek:
* MariaDB (MySQL)
* SQLite
* Fájlból, szimpla fájlkezeléssel
{{:oktatas:programozas:java:java_adatbazis:osztalyok_interfeszek.png|}}
==== UML ====
{{:oktatas:programozas:java:java_adatbazis:osztalyok_interfeszek_uml.png|}}
===== Adattárolók =====
create database surubt;
use surubt;
create table dolgozok (
az int not null primary key auto_increment,
nev varchar(30),
telepules varchar(30),
fizetes double
);
create table dolgozok (
az integer not null primary key autoincrement,
nev text,
telepules text,
fizetes real
);
1:Park Elemér:Szolnok:3850000
2:Teri Aladár:Szeged:2785000
===== Dolgozo =====
public class Dolgozo {
int az;
String nev;
String telepules;
double fizetes;
}
===== iDatabase =====
import java.sql.Connection;
public interface iDatabase {
public Connection connectDb();
public void closeDb(Connection conn);
}
===== Mariadb =====
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Mariadb implements iDatabase {
private Connection tryConnectDb() throws SQLException {
String url = "jdbc:mariadb://localhost:3306/surubt";
return DriverManager.getConnection(url,
"surubt", "titok");
}
public Connection connectDb(){
Connection conn = null;
try {
conn = tryConnectDb();
}catch(SQLException e) {
System.err.println("Hiba! A kapcsolódás sikertelen");
System.err.println(e.getMessage());
}
return conn;
}
private void tryCloseDb(Connection conn) throws SQLException {
conn.close();
}
public void closeDb(Connection conn){
try {
tryCloseDb(conn);
}catch(SQLException e) {
System.err.println("Hiba! A kapcsolat zárása sikertelen!");
System.err.println(e.getMessage());
}
}
}
===== Sqlite =====
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Sqlite implements iDatabase {
public Connection tryConnectDb() throws SQLException {
String url = "jdbc:sqlite:surubt.sqlite";
return DriverManager.getConnection(url);
}
public Connection connectDb() {
Connection conn = null;
try {
conn = tryConnectDb();
}catch(SQLException ex) {
System.err.println("Hiba! A kapcsolódás sikertelen!");
}
return conn;
}
public void tryCloseDb(Connection conn) throws SQLException {
conn.close();
}
public void closeDb(Connection conn) {
try {
tryCloseDb(conn);
} catch (SQLException ex) {
System.err.println("Hiba! A bezárás sikertelen!");
}
}
}
===== iData =====
import java.util.List;
public interface iData {
public List getEmployees();
public void insertEmployee(String name, String city);
}
===== DatabaseHandler =====
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class DatabaseHandler implements iData {
iDatabase database;
public DatabaseHandler(iDatabase database) {
this.database = database;
}
public List getEmployees() {
List dolgozok = new ArrayList<>();
try {
dolgozok = tryGetEmployees();
}catch(SQLException e) {
System.err.println("Hiba! A lekérdezés sikertelen!");
System.err.println(e.getMessage());
}
return dolgozok;
}
public List tryGetEmployees() throws SQLException {
List dolgozok = new ArrayList<>();
String sql = "select az, nev, telepules, fizetes from dolgozok";
Connection conn = database.connectDb();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
Dolgozo dolgozo = new Dolgozo();
dolgozo.az = rs.getInt("az");
dolgozo.nev = rs.getString("nev");
dolgozo.telepules = rs.getString("telepules");
dolgozo.fizetes = rs.getDouble("fizetes");
dolgozok.add(dolgozo);
}
database.closeDb(conn);
return dolgozok;
}
public void tryInsertEmployee(String name, String city) throws SQLException {
Connection conn = database.connectDb();
String sql = "insert into dolgozok " +
"(nev, telepules) values " +
"(?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, city);
pstmt.execute();
database.closeDb(conn);
}
public void insertEmployee(String name, String city) {
try {
tryInsertEmployee(name, city);
} catch (SQLException ex) {
System.err.println("Hiba! A beszúrás sikertelen!");
}
}
}
===== FileHandler =====
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class FileHandler implements iData {
public List tryGetEmployees() throws FileNotFoundException {
List dolgozok = new ArrayList<>();
File file = new File("surubt.txt");
Scanner scanner = new Scanner(file);
while(scanner.hasNext()) {
String line = scanner.nextLine();
String[] lineArray = line.split(":");
Dolgozo dolgozo = new Dolgozo();
dolgozo.az = Integer.parseInt(lineArray[0]);
dolgozo.nev = lineArray[1];
dolgozo.telepules = lineArray[2];
dolgozo.fizetes = Double.parseDouble(lineArray[3]);
dolgozok.add(dolgozo);
}
return dolgozok;
}
public List getEmployees() {
List dolgozok = new ArrayList<>();
try {
dolgozok = tryGetEmployees();
} catch (FileNotFoundException e) {
System.err.println("Hiba! A fájl nem található!");
}
return dolgozok;
}
public void tryInsertEmployee(String name, String city) throws IOException {
FileWriter fileWriter = new FileWriter("surubt.txt", true);
PrintWriter printWriter = new PrintWriter(fileWriter);
StringBuilder data = new StringBuilder();
data.append("1:");
data.append(name + ":");
data.append(city + ":0");
printWriter.println(data.toString());
printWriter.close();
}
public void insertEmployee(String name, String city) {
try {
tryInsertEmployee(name, city);
} catch (IOException ex) {
System.err.println("Hiba! A fájl írása sikertelen!");
System.err.println(ex.getStackTrace());
}
}
}
===== Data =====
import java.util.List;
public class Data {
iData data;
public Data(iData data) {
this.data = data;
}
public List getEmployees() {
return this.data.getEmployees();
}
public void insertEmployee(String name, String city) {
this.data.insertEmployee(name, city);
}
}
===== Program01 =====
import java.util.ArrayList;
import java.util.List;
public class Program01 {
public static void main(String[] args) {
List dolgozok = new ArrayList<>();
/* itt határozzuk meg hol tároljuk az adatokat */
//Data data = new Data(new FileHandler());
//Data data = new Data(new DatabaseHandler(new Mariadb()));
Data data = new Data(new DatabaseHandler(new Sqlite()));
dolgozok = data.getEmployees();
for(Dolgozo dolgozo : dolgozok) {
System.out.println(dolgozo.nev);
}
data.insertEmployee("Park Elemér", "Szolnok");
}
}