· 4 years ago · May 30, 2021, 07:46 PM
1package database;
2
3
4import com.zaxxer.hikari.HikariConfig;
5import com.zaxxer.hikari.HikariDataSource;
6
7import java.io.File;
8import java.io.IOException;
9import java.sql.Connection;
10import java.sql.SQLException;
11import java.sql.Statement;
12
13public class SQLiteDataSource {
14 private static final HikariConfig config = new HikariConfig();
15 private static final HikariDataSource ds;
16
17 static{
18 try{
19 final File dbFile = new File("database.db");
20 if(!dbFile.exists()){
21 if(dbFile.createNewFile()){
22 System.out.println("Created Database File!");
23 }
24 else{
25 System.out.println("Could Not Create Database File!");
26 }
27 }
28 }catch(IOException e){
29 e.printStackTrace();
30 }
31 config.setDriverClassName("org.sqlite.JDBC");
32 config.setJdbcUrl("jdbc:sqlite:database.db");
33 config.setConnectionTestQuery("SELECT 1");
34 config.addDataSourceProperty("cachePrepStmts", "true");
35 config.addDataSourceProperty("prepStmtCacheSize", "300");
36 config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
37 config.addDataSourceProperty("useServerPrepStmts","true");
38 config.addDataSourceProperty("autoReconnect", true);
39 config.addDataSourceProperty("cacheResultSetMetadata", true);
40 config.setMaximumPoolSize(10);
41 config.setConnectionTimeout(30000);
42
43 ds = new HikariDataSource(config);
44
45 try (final Statement statement = getConnection().createStatement()) {
46 // language=SQLite
47 statement.execute("CREATE TABLE IF NOT EXISTS user_settings (" +
48 "id INTEGER PRIMARY KEY AUTOINCREMENT," +
49 "username VARCHAR(32) NOT NULL," +
50 "password VARCHAR(32) NOT NULL," +
51 "firstname VARCHAR(10) NOT NULL," +
52 "lastname VARCHAR(10) NOT NULL," +
53 "email VARCHAR(60) NOT NULL," +
54 "avatar VARCHAR(255) NOT NULL," +
55 ");");
56 System.out.println("Table Initialised!");
57 }catch(SQLException e){
58 e.printStackTrace();
59 }
60 }
61
62 private SQLiteDataSource(){ }
63 public static Connection getConnection() throws SQLException {
64 return ds.getConnection();
65 }
66 public static void close(){
67 if (ds != null) {
68 ds.close();
69 System.out.println("Database Closed!");
70 }
71 }
72}
73