Java 变量的损失值

Java 变量的损失值,java,sql,Java,Sql,我正在用SQL Server做一个登录表单,使用三层架构,我调试了这个项目,基本上它是这样工作的:我把用户和密码放在jframe中,用户和密码被发送到BL方法,然后发送到DA,当我正确地放置用户和密码时,执行查询,“resultado”值为1,然后它返回到GUI,但当其验证的“getResultado”时,“resultado”的值为0,因此我无法登录 这是我的GUI方法: u.validarLogin(jtxtUsuario.getText(), String.valueOf(jpsfCont

我正在用SQL Server做一个登录表单,使用三层架构,我调试了这个项目,基本上它是这样工作的:我把用户和密码放在jframe中,用户和密码被发送到BL方法,然后发送到DA,当我正确地放置用户和密码时,执行查询,“resultado”值为1,然后它返回到GUI,但当其验证的“getResultado”时,“resultado”的值为0,因此我无法登录

这是我的GUI方法:

u.validarLogin(jtxtUsuario.getText(), String.valueOf(jpsfContrasenia.getPassword()));
    if (admin.getResultado() == 1) {
        new jfrmInterno().setVisible(true);
    } else {
        JOptionPane.showMessageDialog(null, "El nombre de usuario ingresado no coincide con ninguna cuenta", "", JOptionPane.ERROR_MESSAGE);
        jtxtUsuario.setText("");
        jpsfContrasenia.setText("");
    }
}        
这是我的BL方法:

 public void validarLogin(String user, String pass) {
        if (user != null && pass != null) {
            admin.setUsuario(user, pass);
        }else {
            System.out.println("Incorrecto");
        }
    }
这是我的DA方法:

public int setUsuario(String user, String pass) {
    this.getConexion();
    String usuario = user;
    String password = pass;
    try {
        Statement ejecutor = cn.createStatement();
        ResultSet rs = ejecutor.executeQuery("SELECT * FROM [dbo].[Login] where NombreUsuario = '" + usuario + "' AND Contrasenia= '" + password + "'");
        if (rs.next()) {
            resultado = 1;
        } else {
            resultado = 0;
        }
    } catch (Exception e) {

    }
    return resultado;
}

public int getResultado() {
    return resultado;
}

要简化代码,请这样做;
1.将返回类型添加到BL方法中

public int validarLogin(String user, String pass) {
        int resultado = 0;
        if (user != null && pass != null) {
            resultado = admin.setUsuario(user, pass);
        }else {
            System.out.println("Incorrecto");
        }
        return resultado;
    }
  • 然后将GUI方法更改为此 这肯定会起作用,因为现在每次调用validation BL方法时,您都会将结果作为变量返回


    如果有任何输入错误,请原谅。

    您是否在调用setUsuario的同一对象上调用getResultado?
    int resultado = u.validarLogin(jtxtUsuario.getText(), String.valueOf(jpsfContrasenia.getPassword()));
        if (resultado == 1) {
            new jfrmInterno().setVisible(true);
        } else {
            JOptionPane.showMessageDialog(null, "El nombre de usuario ingresado no coincide con ninguna cuenta", "", JOptionPane.ERROR_MESSAGE);
            jtxtUsuario.setText("");
            jpsfContrasenia.setText("");
        }
    }