package db; import java.sql.*; import java.util.LinkedList; import java.util.List; import db.Recipe; public class Cookbook { public static final String DRIVER = "org.sqlite.JDBC"; public static final String DB_URL = "jdbc:sqlite:cookbook.db"; private Connection conn; private Statement stat; public Cookbook() { try { Class.forName(Cookbook.DRIVER); } catch (ClassNotFoundException e) { System.err.println("Brak sterownika JDBC"); e.printStackTrace(); } try { conn = DriverManager.getConnection(DB_URL); stat = conn.createStatement(); } catch (SQLException e) { System.err.println("Problem z otwarciem polaczenia"); e.printStackTrace(); } createTables(); } public boolean createTables() { String createRecipes = "CREATE TABLE IF NOT EXISTS recipes (id INTEGER PRIMARY KEY AUTOINCREMENT, name varchar, ingredients varchar, description varchar, tags varchar)"; try { stat.execute(createRecipes); } catch (SQLException e) { System.err.println("Blad przy tworzeniu tabeli"); e.printStackTrace(); return false; } return true; } public boolean insertRecipe(String name, String ingredients, String description, String tags) { try { PreparedStatement prepStmt = conn.prepareStatement( "INSERT INTO recipes VALUES (NULL, ?, ?, ?, ?);"); prepStmt.setString(1, name); prepStmt.setString(2, ingredients); prepStmt.setString(3, description); prepStmt.setString(4, tags); prepStmt.execute(); } catch (SQLException e) { System.err.println("Blad przy wstawianiu przepisu"); e.printStackTrace(); return false; } return true; } public Recipe selectRecipe(String name) { Recipe selectedRecipe; try { PreparedStatement query = conn.prepareStatement("SELECT * FROM recipes WHERE name=?"); query.setString(1, name); ResultSet result = query.executeQuery(); int id; String ingredients, description, tags; id = result.getInt("id"); ingredients = result.getString("ingredients"); description = result.getString("description"); tags = result.getString("tags"); selectedRecipe = new Recipe(id, name, ingredients, description, tags); } catch (SQLException e) { e.printStackTrace(); return null; } return selectedRecipe; } public boolean deleteRecipe(String name){ try { PreparedStatement query = conn.prepareStatement("DELETE FROM recipes WHERE name=?"); query.setString(1, name); System.out.println(name); query.execute(); } catch (SQLException e) { e.printStackTrace(); return false; } return true; } public List selectNames(){ List names = new LinkedList(); try { ResultSet result = stat.executeQuery("SELECT name FROM recipes"); String name; while(result.next()){ name = result.getString("name"); names.add(name); } } catch (SQLException e) { e.printStackTrace(); return null; } return names; } public void closeConnection() { try { conn.close(); } catch (SQLException e) { System.err.println("Problem z zamknieciem polaczenia"); e.printStackTrace(); } } }