package me.vaqxine.BuycraftAmplification.database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/*
* Multithreaded SQL "pooling" for running queries to and from the database server.
* Reset connection every 1,000 connections or on timeout, whichever happens first.
*/
public class SQLConnectionThread {
private static Connection con = null;
public static int query_count = 0;
public static Connection getConnection(){
try{
if(query_count >= 1000){
if(con != null){
con.close();
}
con = DriverManager.getConnection(Authentication.sql_url, Authentication.sql_user, Authentication.sql_pass);
query_count = 0;
}
if(con==null || con.isClosed()){
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(Authentication.sql_url, Authentication.sql_user, Authentication.sql_pass);
}
} catch(Exception e){
e.printStackTrace();
try{
con = DriverManager.getConnection(Authentication.sql_url, Authentication.sql_user, Authentication.sql_pass);
} catch(Exception err){
err.printStackTrace();
}
}
query_count++;
return con;
}
public static ResultSet getResultSet(String query){
PreparedStatement pst = null;
try{
pst = SQLConnectionThread.getConnection().prepareStatement(query);
pst.execute();
ResultSet rs = pst.getResultSet();
return rs;
} catch(Exception err){
err.printStackTrace();
return null;
} /*finally {
try {
if (pst != null) {
pst.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}*/
}
}