Cleaned up the MySQLConnection class

This commit is contained in:
mathias 2021-08-19 12:41:15 +02:00
parent 47c8a1391d
commit 2d220c0211
No known key found for this signature in database
GPG Key ID: 8950DF62139C852A

View File

@ -30,6 +30,7 @@ public class MySQLConnection {
/**
* Basic constructor for the connection
*
* @param hostname MySQL server hostname
* @param username MySQL server username
* @param password MySQL server password
@ -44,10 +45,11 @@ public class MySQLConnection {
/**
* Advanced constructor for the connection
* @param hostname MySQL server hostname
* @param username MySQL server username
* @param password MySQL server password
* @param database MySQL server database
*
* @param hostname MySQL server hostname
* @param username MySQL server username
* @param password MySQL server password
* @param database MySQL server database
* @param loginParams Login parameters
*/
public MySQLConnection(String hostname, String username, String password, String database, LoginParam... loginParams) {
@ -60,15 +62,20 @@ public class MySQLConnection {
/**
* Get a result from your server
* @param query Search query
*
* @param query Search query
* @param params Optional parameters
* @return ResultSet
*/
public ResultSet getResultSet(String query, Object... params) {
query = (tablePrefix.isEmpty()) ? query : query.replace((tablePrefixVariable.isEmpty()) ? "$tp" : tablePrefixVariable, tablePrefix);
try { int start = 1;
try {
int start = 1;
PreparedStatement ps = con.prepareStatement(query);
for (Object current : params) { ps.setObject(start, current);start++; }
for (Object current : params) {
ps.setObject(start, current);
start++;
}
return ps.executeQuery();
} catch (Exception err) {
LOG.error(err.getMessage());
@ -78,7 +85,8 @@ public class MySQLConnection {
/**
* Get a result from your server (get the Manager)
* @param query Search query
*
* @param query Search query
* @param params Optional parameters
* @return ResultManager
*/
@ -88,36 +96,46 @@ public class MySQLConnection {
/**
* Run a action with a result from your server
* @param query Search query
*
* @param query Search query
* @param consumer consumer
* @param params Optional parameters
* @param params Optional parameters
*/
public void getResult(String query, SQLConsumer<ResultSet> consumer, Object... params) {
try {
ResultSet resultSet = getResultSet(query, params);
consumer.accept(resultSet);
resultSet.close();
} catch (Exception ignored) {}
} catch (Exception ignored) {
}
}
/**
* Update something on your server by query
* @param query Update query
*
* @param query Update query
* @param params Optional parameters
* @return this class
*/
public MySQLConnection update(String query, Object... params) {
query = (tablePrefix.isEmpty()) ? query : query.replace((tablePrefixVariable.isEmpty()) ? "$tp" : tablePrefixVariable, tablePrefix);
try { int start = 1;
try {
int start = 1;
PreparedStatement ps = con.prepareStatement(query);
for (Object current : params) { ps.setObject(start, current);start++; }
for (Object current : params) {
ps.setObject(start, current);
start++;
}
ps.executeUpdate();
} catch (Exception err) { err.printStackTrace(); }
} catch (Exception err) {
err.printStackTrace();
}
return this;
}
/**
* Get the update de.gnmyt.SQLToolkit.manager for easier updating
*
* @return Update de.gnmyt.SQLToolkit.manager
*/
public UpdateManager update() {
@ -126,6 +144,7 @@ public class MySQLConnection {
/**
* Get the update de.gnmyt.SQLToolkit.manager for easier updating (pre filled table)
*
* @param tableName The name of the table
* @return Update de.gnmyt.SQLToolkit.manager
*/
@ -135,6 +154,7 @@ public class MySQLConnection {
/**
* Get the Database Selection for easier selection of tables (pre filled table)
*
* @param tableName The name of the table
* @return DatabaseSelection
*/
@ -144,6 +164,7 @@ public class MySQLConnection {
/**
* Get the Database Selection for easier selection of tables
*
* @return DatabaseSelection
*/
public DataBaseSelection select() {
@ -152,6 +173,7 @@ public class MySQLConnection {
/**
* Get the InsertManager for easier inserting to a table
*
* @return InsertManager
*/
public InsertManager insert() {
@ -160,6 +182,7 @@ public class MySQLConnection {
/**
* Get the InsertManager for easier inserting to a table
*
* @param tableName The name of the table you want to insert a object
* @return InsertManager
*/
@ -169,21 +192,24 @@ public class MySQLConnection {
/**
* Connect with your MySQL server
*
* @return this class
*/
public MySQLConnection connect() {
if (!isConnected()) { try {
LOG.info("Connecting to " + hostname + " with user " + username + " to database " + database);
if (!isConnected()) {
try {
LOG.info("Connecting to " + hostname + " with user " + username + " to database " + database);
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://" + hostname + "/" + database + connectString, username, password);
LOG.info("Connection established");
} catch (Exception exception) {
if (exception.getMessage().contains("jdbc.Driver"))
LOG.error("MySQL driver not found! Check your dependencies or install the JDBC Mysql Driver from https://dev.mysql.com/downloads/file/?id=498587");
else if (exception.getMessage().contains("has not received any packets"))
LOG.error("No packets received from the server.");
else if (exception.getMessage().contains("denied for user")) LOG.error("Wrong username/password");
else LOG.error(exception.getMessage());
else if (exception.getMessage().contains("has not received any packets"))
LOG.error("No packets received from the server.");
else if (exception.getMessage().contains("denied for user"))
LOG.error("Wrong username/password");
else LOG.error(exception.getMessage());
}
} else LOG.warn("Already connected");
return this;
@ -191,6 +217,7 @@ public class MySQLConnection {
/**
* Disconnect from your MySQL Server
*
* @return this class
*/
public MySQLConnection disconnect() {
@ -199,13 +226,16 @@ public class MySQLConnection {
con.close();
con = null;
LOG.info("Connection closed");
} catch (Exception err) { LOG.error(err.getMessage()); }
} catch (Exception err) {
LOG.error(err.getMessage());
}
} else LOG.warn("Not connected. Please connect first");
return this;
}
/**
* Update the Connection String
*
* @param loginParams New login parameters
* @return this class
*/
@ -216,6 +246,7 @@ public class MySQLConnection {
/**
* Set the Connection String
*
* @param tablePrefixVariable New table prefix variable
* @return this class
*/
@ -224,16 +255,6 @@ public class MySQLConnection {
return this;
}
/**
* Set the current table Prefix
* @param tablePrefix New table prefix
* @return this class
*/
public MySQLConnection setTablePrefix(String tablePrefix) {
this.tablePrefix = tablePrefix;
return this;
}
/**
* Get the current table Prefix
* @return the prefix
@ -242,15 +263,29 @@ public class MySQLConnection {
return tablePrefix;
}
/**
* Set the current table Prefix
*
* @param tablePrefix New table prefix
* @return this class
*/
public MySQLConnection setTablePrefix(String tablePrefix) {
this.tablePrefix = tablePrefix;
return this;
}
/**
* Get the current jdbc connection string for mysql
*
* @param loginParams login parameters
* @return the string
*/
private String getConnectionString(LoginParam[] loginParams) {
boolean used = false;StringBuilder currentString = new StringBuilder();
boolean used = false;
StringBuilder currentString = new StringBuilder();
for (LoginParam param : loginParams) {
String currentChar = (used) ? "&" : "?";used = true;
String currentChar = (used) ? "&" : "?";
used = true;
currentString.append(currentChar).append(param.getValue());
}
return currentString.toString();
@ -258,6 +293,7 @@ public class MySQLConnection {
/**
* Check if you are connected
*
* @return status of the connection
*/
public boolean isConnected() {