ConnectionBuilder.java
package eu.javaexperience.database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public enum ConnectionBuilder
{
mysql("mysql",3306, "?characterEncoding=UTF-8&autoReconnect=true", "com.mysql.jdbc.Driver"),
postgresql("postgresql",5432, "", "org.postgresql.Driver"),
sqlite("sqlite",-1, "", "org.sqlite.JDBC"),
;
private final String name;
private final int defaultPort;
private final String urlExtra;
private ConnectionBuilder(String name,int defaultPort, String urlExtra, String... possibleClasses)
{
this.name = name;
this.defaultPort = defaultPort;
this.urlExtra = urlExtra;
for(String p:possibleClasses)
try
{
Class.forName(p);
}
catch(Exception e)
{}
}
public Connection openConnection(String host,String user,String password,String database) throws SQLException
{
return openConnection(host, defaultPort, user, password, database);
}
public Connection openConnection(String user,String password,String database) throws SQLException
{
return openConnection("localhost", defaultPort, user, password, database);
}
public Connection openConnection(String host, int port, String user,String password,String database) throws SQLException
{
if(port < 1)
{
if(defaultPort < 0)
{
return DriverManager.getConnection("jdbc:"+name+":"+database+urlExtra, user, password);
}
else
{
return DriverManager.getConnection("jdbc:"+name+"://"+database+urlExtra, user, password);
}
}
else
return DriverManager.getConnection("jdbc:"+name+"://"+host+":"+String.valueOf(port)+"/"+database+urlExtra, user, password);
}
public Connection openConnection(String host, int port, String user,String password,String database, Properties props) throws SQLException
{
//TODO https://code.google.com/archive/p/junixsocket/wikis/ConnectingToMySQL.wiki
if(port < 1)
return DriverManager.getConnection("jdbc:"+name+"://"+database+urlExtra, user, password);
else
return DriverManager.getConnection("jdbc:"+name+"://"+host+":"+String.valueOf(port)+"/"+database+urlExtra, user, password);
}
public static Connection openConnection(Class<? extends java.sql.Driver> driver,String DBtype, String host,int port,String user,String password, String database) throws SQLException
{
driver.getName();
return DriverManager.getConnection("jdbc:"+DBtype+"://"+host+":"+String.valueOf(port)+"/"+database, user, password);
}
}