public class Database {
private final static String CREATE_DATA_TABLE = "CREATE TABLE COOKIE_VALUES ("
+ "ID INT NOT NULL GENERATED BY DEFAULT AS IDENTITY, " + "COOKIES_PRO_KLICK INT, " + "ANZAL_COOKIES INT, "
+ "PRIMARY KEY (ID) " + ")"; //Tabelle erzeugen
private final static String ADD_INSTRUCTIONS = "INSERT INTO COOKIE_VALUES VALUES (DEFAULT, ?, ?)"; //Datensätzte setzen
private final static String SET_DEFAULT_COOKIES_PRO_KLICK = "ALTER TABLE COOKIE_VALUES ALTER COOKIES_PRO_KLICK SET DEFAULT 1"; //Defaultwert setzten... weiß nur nicht, wie ichs im Code unterbringen soll
private static String id;
private static int cookies_Pro_Klick;
private static long anzahl_Cookies;
public static int getCookies_Pro_Klick() {
return cookies_Pro_Klick;
}
public static void setCookies_Pro_Klick(int cookies_Pro_Klick) {
Database.cookies_Pro_Klick = cookies_Pro_Klick;
}
public static long getAnzahl_Cookies() {
return anzahl_Cookies;
}
public static void setAnzahl_Cookies(int anzahl_Cookies) {
Database.anzahl_Cookies = anzahl_Cookies;
}
private static Connection createConnection() throws ClassNotFoundException, SQLException {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection connection = DriverManager.getConnection("jdbc:derby:database/cookie;create=true");
return connection;
}
public static void registerConnectionInMain() { //bei Programmstart werden alle Daten in die GUI eingetragen
try (Connection connection = createConnection()) {
DatabaseMetaData metaData = connection.getMetaData();
ResultSet tables = metaData.getTables(null, "APP", "COOKIE_VALUES", null);
if (!tables.next()) { //Nur erstellen wenn Datenbank noch nicht vorhanden ist
Statement instructions = connection.createStatement();
instructions.executeUpdate(CREATE_DATA_TABLE);
instructions.close();
}
PreparedStatement queryInstructions = connection.prepareStatement("SELECT * FROM COOKIE_VALUES"); //Von der Datenbank COOKIE_VALUES Daten holen
ResultSet resultSet = queryInstructions.executeQuery();
while (resultSet.next()) {
id = resultSet.getString("ID");
cookies_Pro_Klick = resultSet.getInt("COOKIES_PRO_KLICK"); //Daten holen
anzahl_Cookies = resultSet.getLong("ANZAL_COOKIES"); //Daten holen
CookieClickerGUI.setCookiesProClick(cookies_Pro_Klick); //Daten in GUI schreiben
CookieClickerGUI.setAnzahlCookies(anzahl_Cookies); //Daten in GUI schreiben
}
} catch (ClassNotFoundException e) {
System.err.println("Database driver not found!");
} catch (SQLException e) {
System.err.println("SQL error");
e.printStackTrace();
}
}
public static void registerConnectionInListener() { //Daten werden in der Datenbank bei jedem klick auf den Cookie aktualisiert/mit den neuen Daten überschrieben
try (Connection connection = createConnection()) {
PreparedStatement insertStatement = connection.prepareStatement(ADD_INSTRUCTIONS);
insertStatement.setInt(1, CookieClickerGUI.getCookiesProClick()); //aus Programm (GUI) holen, in Datenbank setzten
insertStatement.setLong(2, CookieClickerGUI.getAnzahlCookies()); //aus Programm (GUI) holen, in Datenbank setzten
insertStatement.executeUpdate();
} catch (ClassNotFoundException e) {
System.err.println("Database driver not found!");
} catch (SQLException e) {
System.err.println("SQL error");
e.printStackTrace();
}
}
public static String getId() {
return id;
}
public static void setId(String id) {
Database.id = id;
}
}