java与SQL的一些编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 01:49:44
我在做一个登陆系统时,要验证学号和密码是否正确。代码如下;
String sqlStr1="select * from lib_students where 学号="+"'"+str1+"'";
result=statement.executeQuery(sqlStr1);
if(result.next())
{
str=result.getString("密码");
if(str.equals(str2)) JOptionPane.showMessageDialog(null,"欢迎您","",JOptionPane.PLAIN_MESSAGE);
else
{
JOptionPane.showMessageDialog(null,"密码错误!","输入错误",JOptionPane.ERROR_MESSAGE);
CodeField.setText("");
}
}
else
{
JOptionPane.showMessageDialog(null,"无效的学号!","输入错误",JOptionPane.ERROR_MESSAGE);
NumberField.setText("");
CodeField.setText("");
}

为什么当学号和密码输入都正确时,却都只会弹出“密码错误”的提示?
改成“==”也不行的。
虽然可以用select * from lib_students where 学号='"+str1+"' and 密码='"+str2+"'";
但是我更希望先判别学号,如果有无效的学号也可以提示出来

select * from lib_students where 学号='"+str1+"' and 密码='"+str2+"'";
result=statement.executeQuery(sqlStr1);

if(result.next())
{
JOptionPane.showMessageDialog(null,"欢迎您","",JOptionPane.PLAIN_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(null,"密码错误!","输入错误",JOptionPane.ERROR_MESSAGE);
CodeField.setText("");
}

仅供参考!

你的代码看起来没有什么问题,你现在把文本框的密码和数据库的密码取出来了。都在控制台里面分别打印他们的值和长度,看有没有空格之类的东西作怪!

str=result.getString("密码");
密码取的是 数据库表的 字段下标。

比如:
str=result.getString(2);

最好能把SQL表格也写出来 如果你的学号里面有str1那项 第一行只要用String sqlStr1="select * from lib_students where 学号=str1;就可以了

把equals改为 == 再试看看