JAVA连接SQL数据库的查询语句问题
定义了如下一个函数。a,b,c三个字符串用于接收用户名,姓名和密码的值。我想把a,b,c的值与数据库stu里student表中的字段进行对比,如果全部比对正确,则显示登录...
定义了如下一个函数。a,b,c三个字符串用于接收用户名,姓名和密码的值。我想把a,b,c的值与数据库stu里student表中的字段进行对比,如果全部比对正确,则显示登录成功。
问题是while (rs.next()) 里总是执行else语句,无法匹配成功。
我也做过测试,输出sql语句经过a,b,c匹配执行之后的记录集确实是正确的。但是while (rs.next())里总是无法匹配。
楼主不才,第一次做登录界面 望各位客官多多指教。
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 == rs.getString("sno") && b == rs.getString("sname") && c == rs.getString("spasswd"))
System.out.println("true");
else
JOptionPane.showMessageDialog(null, "登录失败!", "登录", JOptionPane.CANCEL_OPTION);
}
}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 (rs.next()) 里总是执行else语句,无法匹配成功。
我也做过测试,输出sql语句经过a,b,c匹配执行之后的记录集确实是正确的。但是while (rs.next())里总是无法匹配。
楼主不才,第一次做登录界面 望各位客官多多指教。
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 == rs.getString("sno") && b == rs.getString("sname") && c == rs.getString("spasswd"))
System.out.println("true");
else
JOptionPane.showMessageDialog(null, "登录失败!", "登录", JOptionPane.CANCEL_OPTION);
}
}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();
}
}
} 展开
5个回答
展开全部
if(a == rs.getString("sno") && b == rs.getString("sname") && c == rs.getString("spasswd"))
把你上面这句if改成下面这样
if(a.equals(rs.getString("sno")) && b.equals(rs.getString("sname")) && c.equals(rs.getString("spasswd")))
字符串比较是否相等不能直接用==,需要用equals()这个方法
2015-04-23
展开全部
try{ }catch(//捕捉的异常){ //报错提示 } 的语法 或者 手动 抛异常也可以啊,推荐前者哦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是个空指针异常,你的changestupassword为空~,看看前后左右调用此方法的代码,多测试几下,用log4j记录当前程序运行的状态,你会更容易找出错误~还有,你是用jdbc连接,推荐使用jpa或hibernate,数据库访问方法都自动写好的了,很方便的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
字符串不能用 == 来判断相等,得出来的肯定是false。应该用 a.equals(rs.getString("sno"
)来判断,后面的一样。
)来判断,后面的一样。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把查询的值sys打印出来看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询