diff --git a/DzieCoin.iml b/DzieCoin.iml index b1c395b..dbc5699 100644 --- a/DzieCoin.iml +++ b/DzieCoin.iml @@ -11,5 +11,7 @@ + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index fe91a01..89b4625 100644 --- a/pom.xml +++ b/pom.xml @@ -13,4 +13,12 @@ 19 UTF-8 + + + + mysql + mysql-connector-java + 8.0.30 + + \ No newline at end of file diff --git a/src/main/java/pl/mikorosa/dziecoin/Main.java b/src/main/java/pl/mikorosa/dziecoin/Main.java index 7ef2b1f..67b2fae 100644 --- a/src/main/java/pl/mikorosa/dziecoin/Main.java +++ b/src/main/java/pl/mikorosa/dziecoin/Main.java @@ -1,5 +1,6 @@ package pl.mikorosa.dziecoin; +import pl.mikorosa.dziecoin.database.DatabaseConnection; import pl.mikorosa.dziecoin.gui.MainFrame; import java.util.ArrayList; @@ -8,8 +9,15 @@ import java.util.List; public class Main { public static int difficulty; public static Blockchain blockchain; + public static DatabaseConnection db; public static void main(String[] args) { + db = new DatabaseConnection(); + + System.out.println(db.query("SELECT * FROM blocks")); + System.out.println(db.query("SELECT * FROM transactions")); + System.out.println(db.query("SELECT * FROM nfts")); + Wallet w1 = new Wallet(); Wallet w2 = new Wallet(); Wallet w3 = new Wallet(); diff --git a/src/main/java/pl/mikorosa/dziecoin/database/DatabaseConnection.java b/src/main/java/pl/mikorosa/dziecoin/database/DatabaseConnection.java new file mode 100644 index 0000000..66d68a0 --- /dev/null +++ b/src/main/java/pl/mikorosa/dziecoin/database/DatabaseConnection.java @@ -0,0 +1,100 @@ +package pl.mikorosa.dziecoin.database; + +import java.sql.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class DatabaseConnection { + private Connection connection = null; + private Statement statement = null; + public DatabaseConnection() { + System.out.println("Connecting to database..."); + try { + Class.forName("com.mysql.cj.jdbc.Driver"); + connection = DriverManager.getConnection("jdbc:mysql://helium.mikorosa.pl:3306/dziecoin", "dziecoin", "Y6seMx#HwgYU"); + System.out.println("Connected"); + } catch(ClassNotFoundException e) { + System.out.println("Error while setting up JDBC driver: " + e.getMessage()); + e.printStackTrace(); + } catch(SQLException e) { + System.out.println("Error while connecting to database: " + e.getMessage()); + e.printStackTrace(); + } + } + + public List> query(String sql) { + List> list = new ArrayList<>(); + try { + System.out.println("Executing query " + sql); + statement = connection.createStatement(); + ResultSet result = statement.executeQuery(sql); + ResultSetMetaData metaData = result.getMetaData(); + int columnCount = metaData.getColumnCount(); + + while(result.next()) { + Map record = new HashMap<>(); + for(int i = 1; i <= columnCount; i++) { + String columnName = metaData.getColumnName(i); + int columnType = metaData.getColumnType(i); + Object value = null; + switch(columnType) { + case Types.INTEGER: + value = result.getInt(i); + break; + case Types.VARCHAR: + case Types.NVARCHAR: + value = result.getString(i); + break; + default: + value = result.getObject(i); + break; + } + record.put(columnName, value); + } + list.add(record); + } + } catch(SQLException e) { + System.out.println("Failed to execute query (" + sql + "): " + e.getMessage()); + e.printStackTrace(); + } + return list; + } + + public boolean update(String sql) { + try { + System.out.println("Executing query " + sql); + statement = connection.createStatement(); + int modifiedRows = statement.executeUpdate(sql); + + if(modifiedRows > 0) return true; + } catch(SQLException e) { + System.out.println("Failed to execute query (" + sql + "): " + e.getMessage()); + e.printStackTrace(); + } + return false; + } + + public void resetCounter(String tableName) { + try { + System.out.println("Executing query ALTER TABLE " + tableName + " AUTO_INCREMENT=1"); + statement = connection.createStatement(); + statement.execute("ALTER TABLE " + tableName + " AUTO_INCREMENT=1"); + } catch(SQLException e) { + System.out.println("Failed to execute query (ALTER TABLE " + tableName + " AUTO_INCREMENT=1): " + e.getMessage()); + e.printStackTrace(); + } + } + + public void deleteAllRecords(String tableName) { + try { + System.out.println("Executing query DELETE FROM " + tableName); + statement = connection.createStatement(); + statement.executeUpdate("DELETE FROM " + tableName); + } catch(SQLException e) { + System.out.println("Failed to execute query (DELETE FROM " + tableName + "): " + e.getMessage()); + e.printStackTrace(); + } + } +}