Saludos. Tengo el siguiente problema que me tiene vuelto loco.
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());
}
Ahora el código del método. que llama al método que conecta con la bd y luego al método que ejecuta el SP.
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();
}
Como pueden ver, después del primer try catch, comienza otro en el que se llama a una método loginSP que se supone llama a un sp para el proceso de login, este método se encuentra en otra clase que pongo a continuación. En esta clase, el contructor revicer un parametro de tipo GestionMySQL que es la clase que uso para procesar la conexion con la bd, luego asigno el valor de la variable conn de esa clase a la variable conexion de la clase actual para poder usarla en la definicion de SP
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;
}
Ahora, el problema esta en que al parecer el flujo no entra el a la llamada del SP , pero tampoco de da excepciones sql ni errores de sintaxis ni nada, simplemente que conecta a la bd y el resto pareciera omitirlo. He llegado a punto de intentar generar un error para obtener un mensaje pero nada. Por favor necesito de su ayuda que esto ya me supero XD.