JAVA连接sql server数据库时的问题
不知道为什么,while(rs.next())里面的if语句为真时可以提示”登录成功“但,if语句为假时else语句无法被触发。publicvoidDBlogin(Str...
不知道为什么,while (rs.next())里面的if语句为真时可以提示”登录成功“
但,if语句为假时else语句无法被触发。
public void DBlogin(String a,String b,String c){
PreparedStatement psmt = null;
//定义连接
Connection con = null;
//定义数据结果
ResultSet rs = null;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=stu","sa","shota");
psmt = con.prepareStatement("select * from student where sno = ? and sname = ? and spasswd = ?");
//三个问号的值
psmt.setString(1, a);
psmt.setString(2, b);
psmt.setString(3, c);
rs = psmt.executeQuery();
while (rs.next()) {
if(a.equals(rs.getString("sno").trim()) && b.equals(rs.getString("sname").trim()) && c.equals(rs.getString("spasswd").trim()))
JOptionPane.showMessageDialog(null, "登陆成功!");
else
JOptionPane.showMessageDialog(null, "用户名或密码错误!", "提示", JOptionPane.ERROR_MESSAGE);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(psmt != null)
psmt.close();
if(con != null)
con.close();
if(rs != null)
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
将while语句改为后
while (rs.next()) {
if(a.equals(rs.getString("sno").trim()))
JOptionPane.showMessageDialog(null, "登陆成功!");
if(1==1)
JOptionPane.showMessageDialog(null, "用户名或密码有误!");
}
发现 当第一个if条件为假时,不执行后面的if条件。当第一个if条件为真时,才执行后面的if条件。 展开
但,if语句为假时else语句无法被触发。
public void DBlogin(String a,String b,String c){
PreparedStatement psmt = null;
//定义连接
Connection con = null;
//定义数据结果
ResultSet rs = null;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=stu","sa","shota");
psmt = con.prepareStatement("select * from student where sno = ? and sname = ? and spasswd = ?");
//三个问号的值
psmt.setString(1, a);
psmt.setString(2, b);
psmt.setString(3, c);
rs = psmt.executeQuery();
while (rs.next()) {
if(a.equals(rs.getString("sno").trim()) && b.equals(rs.getString("sname").trim()) && c.equals(rs.getString("spasswd").trim()))
JOptionPane.showMessageDialog(null, "登陆成功!");
else
JOptionPane.showMessageDialog(null, "用户名或密码错误!", "提示", JOptionPane.ERROR_MESSAGE);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(psmt != null)
psmt.close();
if(con != null)
con.close();
if(rs != null)
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
将while语句改为后
while (rs.next()) {
if(a.equals(rs.getString("sno").trim()))
JOptionPane.showMessageDialog(null, "登陆成功!");
if(1==1)
JOptionPane.showMessageDialog(null, "用户名或密码有误!");
}
发现 当第一个if条件为假时,不执行后面的if条件。当第一个if条件为真时,才执行后面的if条件。 展开
推荐于2016-03-10 · 知道合伙人软件行家
关注
展开全部
因为你查询出来的数据都是符合条件的
-- 这句是查询语句
select * from student where sno = ? and sname = ? and spasswd = ?
//下面是参数
psmt.setString(1, a);
psmt.setString(2, b);
psmt.setString(3, c);
查出来的数据肯定是符合条件的!!!
//有数据时不可能为false
a.equals(rs.getString("sno").trim()) && b.equals(rs.getString("sname").trim()) && c.equals(rs.getString("spasswd").trim()))
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询