/**
*
*/
package ORM;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* @author Gwilym
* @version 0.0
*/
public class DatabaseConnection {
private String userName="";
private String password="";
private String host="";
Connection conn;
/**
* @param userName
* @param password
* @param host
*/
public DatabaseConnection(String userName, String password, String host) {
this.userName = userName;
this.password = password;
this.host = host;
}
public DatabaseConnection(String userName, String password, String host,boolean autoConnect) {
this.userName = userName;
this.password = password;
this.host = host;
if (autoConnect)
{
try {
Connect();
} catch (DatabaseConnectionException e) {
e.printStackTrace();
}
}
}
/**
* @return the connection
*/
public Connection getConn() {
return conn;
}
/**
* @param userName the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @param host the host to set
*/
public void setHost(String host) {
this.host = host;
}
/**
* Connect, attempts to connect to the MySQL database
* with sun JDBC
* & MySQL driver
* @param none
* @return True iff connected;
* @return False for all else;
* @throws DatabaseConnectionException
*/
public boolean Connect() throws DatabaseConnectionException
{
// Attempt to load database driver
try
{
String url = "jdbc:mysql:"+host;
System.out.println(url);
//Load driver
Class.forName ("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection (url, userName, password);
}
catch (ClassNotFoundException cnfe) // driver not found
{
conn=null;
System.err.println ("Unable to load database driver");
throw new DatabaseConnectionException(cnfe);
}
catch(InstantiationException ie)
{
conn=null;
System.err.println ("Unable to Create database driver");
throw new DatabaseConnectionException(ie);
}
catch (IllegalAccessException iae)
{
conn=null;
System.err.println ("Unable to Create database driver");
throw new DatabaseConnectionException(iae);
} catch (SQLException sqle) {
conn=null;
System.err.println ("SQL error");
throw new DatabaseConnectionException(sqle);
}
if (conn!=null)
{
System.out.println ("Database connection established");
return true;
}
else
{
System.out.println ("Database connection Failed");
return false;
}
}
/**
* Disconnects the System from the mySQL database
*
* @param none
* @return true, if successful
* @return false if not connection in existance
*/
public boolean Disconnect()
{
if (conn != null)
{
try
{
conn.close();
conn=null;
System.out.println ("Database connection terminated normally");
return true;
}
catch (Exception e) {
//Ignore these errors as they all result in conn.close anyway
}
finally
{
conn=null;
System.gc();
// my removing the refrance to conncetion all calling the Garbage collecter we insure it is destoryed.
}
System.out.println ("Database connection terminated with errors");
return true;
}
else
{
System.out.println ("No Database connection present");
return true;
}
}
}
Le code ci-dessus est appelé parcom.mysql.jdbc.exceptions.jdbc4.CommunicationsException lorsque vous utilisez JDBC pour accéder à la base de données MySQL à distance
DatabaseConnection db =new DatabaseConnection("USERNAME","PASSWORD","//tel2.dur.ac.uk:3306/dcs8s07_SEG",true);
pour des raisons évidentes, j'ai supprimé le nom d'utilisateur et mot de passe, mais ils peuvent être supposés être corrects.
Jusqu'à ce que le problème lui-même, je reçois une exception com.mysql.jdbc.exceptions.jdbc4.CommunicationsException lorsque ce code est exécuté avec les détails "Le dernier paquet envoyé avec succès au serveur était il y a 0 millisecondes. n'a reçu aucun paquet du serveur. "
Mon principal problème pour le moment est d'essayer de découvrir ce qui ne va pas. Dans la mesure où je peux dire que le pilote est chargé correctement car mon code ne lance pas une exception ClassNotFoundException, plutôt une SQLException de quelque nature que ce soit.
Donc, le problème est presque certainement la connexion d'une certaine manière. Je peux connecter et interroger cette base de données si un phpMyadmin situé sur le même serveur que je peux supposer que
1) Le serveur est en ligne 2) mySQL travaille 3) le nom d'utilisateur et mot de passe sont corrects 4) la base de données est présent et j'ai le nom correct
De cela et "Le pilote n'a pas reçu de paquets du serveur." Je me demande si l'URL a malformé?
URL = jdbc: mysql: //tel2.dur.ac.uk: 3306/dcs8s07_SEG
ou il un cadre simple qui est incorrect sur le serveur est whihc ne me permet de vous connecter?
J'ai réfléchi sur ce problème et a tenté plusieurs googles en vain, de sorte que toute idée serait d'une grande aide
merci à l'avance SO!
Hey Balaus J'ai quelque chose de très Causée par: java.net.ConnectException: Connection timed out: connect – Gwilym
Délai de connexion dépassé usu. indique que le pare-feu bloque la communication. –
hey argherna quelle fin pensez-vous? mon ordinateur ou le serveur? – Gwilym