db #1
306
src/main/java/com/bib/essensbestellungsverwaltung/Database.java
Normal file
306
src/main/java/com/bib/essensbestellungsverwaltung/Database.java
Normal file
@ -0,0 +1,306 @@
|
||||
package com.bib.essensbestellungsverwaltung;
|
||||
/**
|
||||
* @author Malte Schulze Hobeling
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class Database {
|
||||
private static final String dbLocation = "jdbc:sqlite:"+Path.of("").toAbsolutePath()+"/database.db";
|
||||
protected static void init(){
|
||||
File db = new File(Path.of("").toAbsolutePath()+"/database.db");
|
||||
try {
|
||||
db.createNewFile();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
protected static Connection connect(){
|
||||
Connection conn = null;
|
||||
try{
|
||||
conn = DriverManager.getConnection(dbLocation);
|
||||
}catch (SQLException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return conn;
|
||||
}
|
||||
|
||||
protected static void createDb(){
|
||||
String[] sql = new String[14];
|
||||
sql[0] = """
|
||||
CREATE TABLE IF NOT EXISTS address (
|
||||
id integer PRIMARY KEY,
|
||||
street text,
|
||||
number text,
|
||||
plz text,
|
||||
city text
|
||||
);""";
|
||||
sql[1] = """
|
||||
CREATE TABLE IF NOT EXISTS food_type (
|
||||
id integer PRIMARY KEY,
|
||||
name text
|
||||
);""";
|
||||
sql[2] = """
|
||||
CREATE TABLE IF NOT EXISTS allergy (
|
||||
id integer PRIMARY KEY,
|
||||
name text
|
||||
);""";
|
||||
sql[3] = """
|
||||
CREATE TABLE IF NOT EXISTS severity (
|
||||
id integer PRIMARY KEY,
|
||||
severity integer
|
||||
);""";
|
||||
sql[4] = """
|
||||
CREATE TABLE IF NOT EXISTS user (
|
||||
id integer PRIMARY KEY,
|
||||
name text,
|
||||
firstname text,
|
||||
addressid integer,
|
||||
password text,
|
||||
email text UNIQUE,
|
||||
FOREIGN KEY(addressid) REFERENCES address(id)
|
||||
);""";
|
||||
sql[5] = """
|
||||
CREATE TABLE IF NOT EXISTS child (
|
||||
id integer PRIMARY KEY,
|
||||
name text,
|
||||
firstname text,
|
||||
addressid integer,
|
||||
FOREIGN KEY(addressid) REFERENCES address(id)
|
||||
);""";
|
||||
sql[6] = """
|
||||
CREATE TABLE IF NOT EXISTS worker (
|
||||
userid integer PRIMARY KEY,
|
||||
FOREIGN KEY(userid) REFERENCES user(id)
|
||||
);""";
|
||||
sql[7] = """
|
||||
CREATE TABLE IF NOT EXISTS parent (
|
||||
userid integer PRIMARY KEY,
|
||||
FOREIGN KEY(userid) REFERENCES user(id)
|
||||
);""";
|
||||
sql[8] = """
|
||||
CREATE TABLE IF NOT EXISTS parent_child (
|
||||
id integer PRIMARY KEY,
|
||||
parentuserid integer,
|
||||
childid integer,
|
||||
FOREIGN KEY(parentuserid) REFERENCES parent(userid),
|
||||
FOREIGN KEY(childid) REFERENCES child(id)
|
||||
);""";
|
||||
sql[9] = """
|
||||
CREATE TABLE IF NOT EXISTS child_allergy (
|
||||
id integer PRIMARY KEY,
|
||||
childid integer,
|
||||
allergyid integer,
|
||||
severityid integer,
|
||||
FOREIGN KEY(childid) REFERENCES child(id),
|
||||
FOREIGN KEY(allergyid) REFERENCES allergy(id),
|
||||
FOREIGN KEY(severityid) REFERENCES severity(id)
|
||||
);""";
|
||||
sql[10] = """
|
||||
CREATE TABLE IF NOT EXISTS food (
|
||||
id integer PRIMARY KEY,
|
||||
name text,
|
||||
description text,
|
||||
isdessert integer,
|
||||
food_typeid integer,
|
||||
FOREIGN KEY(food_typeid) REFERENCES food_type(id)
|
||||
);""";
|
||||
sql[11] = """
|
||||
CREATE TABLE IF NOT EXISTS food_plan (
|
||||
id integer PRIMARY KEY,
|
||||
date text,
|
||||
food1 integer,
|
||||
food2 integer,
|
||||
dessert1 integer,
|
||||
dessert2 integer,
|
||||
FOREIGN KEY(food1) REFERENCES food(id),
|
||||
FOREIGN KEY(food2) REFERENCES food(id),
|
||||
FOREIGN KEY(dessert1) REFERENCES food(id),
|
||||
FOREIGN KEY(dessert2) REFERENCES food(id)
|
||||
);""";
|
||||
sql[12] = """
|
||||
CREATE TABLE IF NOT EXISTS food_restrictions (
|
||||
id integer PRIMARY KEY,
|
||||
foodid integer,
|
||||
allergyid integer,
|
||||
FOREIGN KEY(foodid) REFERENCES food(id),
|
||||
FOREIGN KEY(allergyid) REFERENCES allergy(id)
|
||||
);""";
|
||||
sql[13] = """
|
||||
CREATE TABLE IF NOT EXISTS food_selection (
|
||||
id integer PRIMARY KEY,
|
||||
childid integer,
|
||||
food_planid integer,
|
||||
selection integer,
|
||||
FOREIGN KEY(childid) REFERENCES child(id),
|
||||
FOREIGN KEY(food_planid) REFERENCES food_plan(id)
|
||||
);""";
|
||||
try(Connection conn = connect(); Statement stmt = conn.createStatement()){
|
||||
for(int i = 0; i < sql.length; i++){
|
||||
stmt.execute(sql[i]);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
protected static void fillSampleDb(){
|
||||
List<String> sqls = new ArrayList<>();
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_type (id,name)
|
||||
VALUES ('1','Vegan');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_type (id,name)
|
||||
VALUES ('2','Vegetarisch');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO food_type (id,name)
|
||||
VALUES ('3','Fleischhaltig');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('1','Eier');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('2','Soja');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('3','Milch');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('4','Erdnüsse');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('5','Weichtiere');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('6','Krebstiere');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('7','Getreide');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('8','Senf');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('9','Sesam');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('10','Schwefeldioxid und Sulfit');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('11','Nüsse');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('12','Sellerie');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('13','Fische');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('14','Lupinen');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('15','Nitrit-Pökelsalz');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('16','Phosphat');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('17','Nitrat');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('18','Antioxidationsmittel');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('19','Farbstoff');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('20','Geschmacksverstärker');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('21','Süßungsmittel');""");
|
||||
sqls.add("""
|
||||
INSERT OR IGNORE INTO allergy (id,name)
|
||||
VALUES('22','Konservierungsstoff');""");
|
||||
try(Connection conn = connect(); Statement stmt = conn.createStatement()){
|
||||
for (String sql : sqls) {
|
||||
stmt.execute(sql);
|
||||
}
|
||||
}catch (SQLException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
protected static boolean insert(String table, String header, String values){
|
||||
try (Connection conn = connect(); Statement stmt = conn.createStatement()){
|
||||
String sql = "INSERT OR IGNORE INTO " + table + " (" + header + ") VALUES(" + values + ");";
|
||||
stmt.execute(sql);
|
||||
} catch (SQLException e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
protected static void printSampleQuery(){
|
||||
String sql = """
|
||||
SELECT * FROM food_type WHERE id > ?;""";
|
||||
String sql1 = """
|
||||
SELECT * FROM allergy WHERE id > ?;""";
|
||||
try(Connection conn = connect()){
|
||||
PreparedStatement pstmt = conn.prepareStatement(sql);
|
||||
PreparedStatement pstmt1 = conn.prepareStatement(sql1);
|
||||
pstmt.setInt(1,0);
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
System.out.println("food_type");
|
||||
while (rs.next()){
|
||||
System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name"));
|
||||
}
|
||||
System.out.println("allergy");
|
||||
pstmt1.setInt(1,0);
|
||||
rs = pstmt1.executeQuery();
|
||||
while (rs.next()){
|
||||
System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name"));
|
||||
}
|
||||
}catch (SQLException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
protected static void deleteSample(){
|
||||
String sql = """
|
||||
DELETE FROM user WHERE id = ?;""";
|
||||
try(Connection conn = connect();PreparedStatement pstmt = conn.prepareStatement(sql)){
|
||||
pstmt.setInt(1,1);
|
||||
pstmt.executeUpdate();
|
||||
}catch (SQLException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/* String sql = """
|
||||
CREATE TABLE IF NOT EXISTS user (
|
||||
id integer PRIMARY KEY,
|
||||
name text);""";
|
||||
String sql2 = "SELECT * FROM user WHERE id > ?";
|
||||
String sql3 = "INSERT INTO user (id,name) VALUES (1,'test1')";
|
||||
try(Connection conn = connect();
|
||||
Statement stmt = conn.createStatement()){
|
||||
stmt.execute(sql);
|
||||
stmt.execute(sql3);
|
||||
PreparedStatement pstmt = conn.prepareStatement(sql2);
|
||||
pstmt.setInt(1,0);
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
while (rs.next()){
|
||||
System.out.println(rs.getInt("id"));
|
||||
}
|
||||
}catch (SQLException e){
|
||||
e.printStackTrace();
|
||||
return;
|
||||
} */
|
||||
}
|
@ -6,10 +6,8 @@ import javafx.scene.Scene;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.sql.*;
|
||||
|
||||
public class HelloApplication extends Application {
|
||||
private static final String dbLocation = "jdbc:sqlite:"+HelloApplication.class.getResource("database/database.db");
|
||||
@Override
|
||||
public void start(Stage stage) throws IOException {
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
|
||||
@ -20,36 +18,11 @@ public class HelloApplication extends Application {
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
/* String sql = """
|
||||
CREATE TABLE IF NOT EXISTS user (
|
||||
id integer PRIMARY KEY,
|
||||
name text);""";
|
||||
String sql2 = "SELECT * FROM user WHERE id > ?";
|
||||
String sql3 = "INSERT INTO user (id,name) VALUES (1,'test1')";
|
||||
try(Connection conn = connect();
|
||||
Statement stmt = conn.createStatement()){
|
||||
stmt.execute(sql);
|
||||
stmt.execute(sql3);
|
||||
PreparedStatement pstmt = conn.prepareStatement(sql2);
|
||||
pstmt.setInt(1,0);
|
||||
ResultSet rs = pstmt.executeQuery();
|
||||
while (rs.next()){
|
||||
System.out.println(rs.getInt("id"));
|
||||
}
|
||||
}catch (SQLException e){
|
||||
e.printStackTrace();
|
||||
return;
|
||||
} */
|
||||
Database.init();
|
||||
Database.createDb();
|
||||
Database.fillSampleDb();
|
||||
Database.printSampleQuery();
|
||||
//Database.deleteSample();
|
||||
launch();
|
||||
}
|
||||
|
||||
private static Connection connect(){
|
||||
Connection conn = null;
|
||||
try{
|
||||
conn = DriverManager.getConnection(dbLocation);
|
||||
}catch (SQLException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
return conn;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user