diff options
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/database')
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/database/Database.java | 20 | ||||
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java | 11 |
2 files changed, 24 insertions, 7 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java b/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java index 9a0837b..8001368 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/database/Database.java @@ -21,6 +21,8 @@ package net.tylermurphy.hideAndSeek.database; import com.google.common.io.ByteStreams; import net.tylermurphy.hideAndSeek.Main; +import org.sqlite.SQLiteConfig; +import sun.font.ScriptRun; import java.io.ByteArrayInputStream; import java.io.File; @@ -30,6 +32,8 @@ import java.nio.ByteBuffer; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; + +import java.sql.Statement; import java.util.UUID; public class Database { @@ -37,14 +41,15 @@ public class Database { private static final File databaseFile = new File(Main.data, "database.db"); public static PlayerInfoTable playerInfo; + private static SQLiteConfig config; protected static Connection connect() { Connection conn = null; try { String url = "jdbc:sqlite:"+databaseFile; - conn = DriverManager.getConnection(url); + conn = DriverManager.getConnection(url, config.toProperties()); } catch (SQLException e) { - System.out.println(e.getMessage()); + Main.plugin.getLogger().severe(e.getMessage()); } return conn; } @@ -71,10 +76,15 @@ public class Database { try { Class.forName("org.sqlite.JDBC"); } catch (ClassNotFoundException e) { - Main.plugin.getLogger().severe("Unable to load SQLite driver!"); - System.exit(-1); - return; + Main.plugin.getLogger().severe(e.getMessage()); + throw new RuntimeException(e.getMessage()); } + + config = new SQLiteConfig(); + config.setSynchronous(SQLiteConfig.SynchronousMode.NORMAL); + config.setTempStore(SQLiteConfig.TempStore.MEMORY); + playerInfo = new PlayerInfoTable(); } + } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java b/src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java index e859687..7b9b476 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/database/PlayerInfoTable.java @@ -20,8 +20,10 @@ package net.tylermurphy.hideAndSeek.database; import net.tylermurphy.hideAndSeek.Main; +import net.tylermurphy.hideAndSeek.configuration.Config; import net.tylermurphy.hideAndSeek.util.WinType; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.sql.*; @@ -42,7 +44,7 @@ public class PlayerInfoTable { + ");"; try(Connection connection = Database.connect(); Statement statement = connection.createStatement()){ - statement.execute(sql); + statement.executeUpdate(sql); } catch (SQLException e){ Main.plugin.getLogger().severe("SQL Error: " + e.getMessage()); } @@ -59,6 +61,8 @@ public class PlayerInfoTable { statement.setBytes(1, bytes); ResultSet rs = statement.executeQuery(); if(rs.next()){ + rs.close(); + connection.close(); return new PlayerInfo( uuid, rs.getInt("wins"), @@ -67,6 +71,7 @@ public class PlayerInfoTable { rs.getInt("games_played") ); } + rs.close(); } catch (SQLException e){ Main.plugin.getLogger().severe("SQL Error: " + e.getMessage()); } catch (IOException e) { @@ -84,7 +89,7 @@ public class PlayerInfoTable { List<PlayerInfo> infoList = new ArrayList<>(); while(rs.next()){ PlayerInfo info = new PlayerInfo( - Database.convertBinaryStream(rs.getBinaryStream("uuid")), + Database.convertBinaryStream(new ByteArrayInputStream(rs.getBytes("uuid"))), rs.getInt("wins"), rs.getInt("seeker_wins"), rs.getInt("hider_wins"), @@ -92,6 +97,8 @@ public class PlayerInfoTable { ); infoList.add(info); } + rs.close(); + connection.close(); return infoList; } catch (SQLException e){ Main.plugin.getLogger().severe("SQL Error: " + e.getMessage()); |