oktatas:programozas:java:java_adatbazis:interfesz_hasznalata
Tartalomjegyzék
Interfész használata
- Szerző: Sallai András
- Copyright © 2020, Sallai András
- Szerkesztve: 2020, 2022
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
Bevezetés
Az interfész lehetővé teszi, hogy ahol az adatokat felhasználjuk, ott döntsük el, melyik adatbázist használjuk.
Az alábbi példában App osztályban példányosítjuk a Data osztályt, ahol a konstruktor számára átadunk egy olyan osztályt, amely implementálja a iDatabase interfészt.
Az iDatabase interfészt az Sqlite és Mariadb osztály implementálja. Ezek adhatók meg paraméternek. A „new Sqlite()” esetén az adatok SQLite adatbázisban tárolódnak. A „new Mariadb()” esetén az adatok MariaDB adatbázisban tárolódnak.
Adatbázis
- mysql_create.sql
create database surubt character set utf8 collate utf8_hungarian_ci; grant all privileges on surubt.* to surubt@localhost identified by 'titok'; use surubt; create table employees ( id int not null primary key auto_increment, name varchar(50), city varchar(50), salary double );
- sqlite_create.sql
create table employees ( id integer not null primary key autoincrement, name text, city text, salary real );
- insert.sql
insert into employees (name, city, salary) values ("Para Béla", "Szolnok", 347), ("Csend Irén", "Szeged", 342);
Employee
- Employee.java
public class Employee { int id; String name; String city; double salary; }
DatabaseConnection Interfész
Írjuk le, milyen metódusokra van szükség az adatbázis elérése során:
- DatabaseConnection
import java.sql.Connection; public interface DatabaseConnection { public Connection connectDb(); public void closeDb(Connection conn); }
MariadbConnection
A MariaDB használata:
- MariadbConnection.java
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class MariadbConnection implements DatabaseConnection { 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()); } } }
SqliteConnection
- SqliteConnection.java
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class SqliteConnection implements DatabaseConnection { 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!"); } } }
A surubt.sqlite fájlnak a projekt gyökérkönyvtárában a helye.
DataService
- DataService.java
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 DataService { DatabaseConnection database; public DataService(DatabaseConnection database) { this.database = database; } public List<Employee> getEmployees() { List<Employee> employee = new ArrayList<>(); try { employee = tryGetEmployees(); }catch(SQLException e) { System.err.println("Hiba! A lekérdezés sikertelen!"); System.err.println(e.getMessage()); } return employee; } public List<Employee> tryGetEmployees() throws SQLException { List<Employee> employees = new ArrayList<>(); String sql = "select id, name, city, salary from employees"; Connection conn = database.connectDb(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); while(rs.next()) { Employee employee = new Employee(); employee.id = rs.getInt("id"); employee.name = rs.getString("name"); employee.city = rs.getString("city"); employee.salary = rs.getDouble("salary"); employees.add(employee); } database.closeDb(conn); return employees; } public void tryInsertEmployee(String name, String city) throws SQLException { Connection conn = database.connectDb(); String sql = "insert into employees " + "(name, city) 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!"); } } }
App
- App.java
import java.util.ArrayList; import java.util.List; public class App { public static void main(String[] args) { List<Employee> employees = new ArrayList<>(); DataService data = new DataService(new MariadbConnection()); employees = data.getEmployees(); for(Employee employee : employees) { System.out.println(employee.name); } data.insertEmployee("Park Elemér", "Szolnok"); } }
oktatas/programozas/java/java_adatbazis/interfesz_hasznalata.txt · Utolsó módosítás: 2023/08/03 19:38 szerkesztette: admin