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();
}
}
}
展开
 我来答
白菜一颗
2015-04-23 · TA获得超过8916个赞
知道大有可为答主
回答量:3260
采纳率:69%
帮助的人:3700万
展开全部
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(//捕捉的异常){ //报错提示 } 的语法 或者 手动 抛异常也可以啊,推荐前者哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
葛施然仪侬
2019-08-21 · TA获得超过2.9万个赞
知道小有建树答主
回答量:1.1万
采纳率:32%
帮助的人:696万
展开全部
这是个空指针异常,你的changestupassword为空~,看看前后左右调用此方法的代码,多测试几下,用log4j记录当前程序运行的状态,你会更容易找出错误~还有,你是用jdbc连接,推荐使用jpa或hibernate,数据库访问方法都自动写好的了,很方便的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d6952d3ca
2015-04-23 · TA获得超过115个赞
知道小有建树答主
回答量:72
采纳率:0%
帮助的人:73.2万
展开全部
字符串不能用 == 来判断相等,得出来的肯定是false。应该用 a.equals(rs.getString("sno"
)来判断,后面的一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
腾飞yyds
2015-04-23 · TA获得超过451个赞
知道小有建树答主
回答量:587
采纳率:50%
帮助的人:257万
展开全部
你把查询的值sys打印出来看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式