我试图在jsp页面中使用javascript函数检查mysql数据库中的用户名可用性,点击提交按钮,这里是代码:
<button type="button" class="signUpbtn" id="btn1" onclick="return check();" />Sign Up</button>
<INPUT TYPE="button" class="signInbtn" VALUE="Sign In" onClick="submitFunction(1)">
</div>
</div>
<script>
function check(){
<%
String user = request.getParameter("userName");
user = (String) session.getAttribute("userName");
String sql = "select * from user where UserName = ?" ;
PreparedStatement ps = null;
ps = MysqlConnection.getPreparedStatement(sql);
ps.setString(1, user);
ResultSet rs = ps.executeQuery();
if (rs == null){
response.sendRedirect("ManagerSignUp.jsp");
}
else{
%>
alert("Please Choose another username!");
<%} %>
}
</script>
MysqlConnection是一个用于数据库连接的类(即不是错误)
问题是,当我尝试使用不存在的用户名进行注册时,它仍会显示上述用户名重复的消息。
另一个问题是rs.next()和rs.equal()以及所有这些方法都会破坏我的html表单!
任何帮助?!!
答案 0 :(得分:0)
除了安全问题(请参阅评论),您的ResultSet rs
很可能永远不会为空。试试rs.next()
,如果结果中没有数据,则返回false。
答案 1 :(得分:0)
不确定为什么rs.next()
不能为您工作,但是如果查询有效,您可以尝试使用rs.isBeforeFirst()
然后会生成一行并且这将返回true,否则它将返回false rs中没有行