我正在使用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;
}
答案 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;
}
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方法时,您都将结果作为变量返回。
如有错别字请原谅我。