变量损失值

时间:2019-11-24 19:59:36

标签: java sql

我正在使用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 个答案:

答案 0 :(得分:2)

要简化代码,请执行以下操作;
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;
    }
  1. 然后将您的GUI方法更改为此;
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("");
    }
}

这肯定应该起作用,因为现在每次调用验证BL方法时,您都将结果作为变量返回。

如有错别字请原谅我。