Tengo un método que usa un hilo para conectarse a una BD, el cual funciona perfecto, este es el código:
Primero los atributos de clase y el constructor
Código PHP:
public class Acciones_Login {
// Atributos
private Login login;
private GestionMySQL conexion;
private Conectando ventana_conectando;
private Servicio_Login servicio_login;
//Constructor
public Acciones_Login(Login login, GestionMySQL conexion, Conectando ventana_conectando){
this.login = login;
this.conexion = conexion;
this.ventana_conectando = ventana_conectando;
this.servicio_login = new Servicio_Login(getConexion());
}
Código PHP:
public void logueando(){
SwingWorker worker = new SwingWorker <Void , Void>() {
@Override
protected Void doInBackground() {
try {
getConexion().conectar("localhost","bdcitas","root","pochocha");
}
catch (SQLException ex)
{
JOptionPane.showMessageDialog(null, "Ha fallado la conexión con el servidor \n" + ex.getMessage(),"Error de conexión", 0);
}
catch (ClassNotFoundException ex)
{
JOptionPane.showMessageDialog(null, "No se encuentra el controlador de conexion\n" + ex.getMessage(),"Error de conexión", 0);
}
finally
{
destruye_ventanas(getVentanaConectando());
getLogin().getBtnIngresar().setEnabled(true);
}
try {
getServicio_Login().loginSp("cadena", "cadena");
System.out.println("asdasd");
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
return null;
}
};
worker.execute();
}
Código PHP:
public class Servicio_Login {
private Connection conexion;
public Servicio_Login(GestionMySQL conexion){
this.conexion = conexion.getVarConn();
}
public void loginSp(String usuario, String contrasena) throws SQLException{
CallableStatement SP = getConexion().prepareCall("call Logfin(?,?)");
// cargar parametros al SP
SP.setString("userx", usuario);
SP.setString("pass" , contrasena);
// ejecutar el SP
SP.execute();
}
//Acceso variables
public Connection getConexion(){
return this.conexion;
}
}
Esta es la clase que uso para conectar con la BD
Código PHP:
public class GestionMySQL {
private Connection conn;
private PreparedStatement consulta;
private ResultSet datos;
//Métodos
public void conectar(String servidor, String bd, String usuario, String password) throws ClassNotFoundException, SQLException{
Class.forName("com.mysql.jdbc.Driver");
this.conn = DriverManager.getConnection("jdbc:mysql://"+servidor+"/"+bd, usuario, password);
}
public void desconectar() throws SQLException{
this.consulta.close();
this.conn.close();
}
public void liberarDatos() throws SQLException{
this.datos.close();
}
//Acceso a datos
public Connection getVarConn(){
return this.conn;
}