jsp验证用户名是否被使用

来源:百度知道 编辑:UC知道 时间:2024/05/21 16:03:29
下面这段代码错在哪里?为什么检查不了用户名是否被使用?

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.sql.*"%>
<html>
<head><title>注册新用户</title></head>
<body>
<%
boolean f = false;
String a;
String id=request.getParameter("name");

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=jspdb";
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select id from users where id='"+id+"'";
ResultSet rs=stmt.executeQuery(sql);
f=rs.next();
a=(String)rs.getObject("id");

你的逻辑是不是有问题呢?
id这个变量是新的用户名,那么a是什么呢?
a是你从
String sql="select id from users where id='"+id+"'";
ResultSet rs=stmt.executeQuery(sql);
f=rs.next();
a=(String)rs.getObject("id");
这个里面取得的id。
所以如果这个Id存在的话,那门a始终就等于了Id .
相反,如果这个id不存在,那么估计会出错,因为rs这个时候等于Null,执行f=rs.next(); 的时候会出错。
应该这这样判断:
不要取a的值了,直接如果rs==null,那么就说明从数据库中没有取得满足ID的记录,就不存在该用户,可以注册。
如果rs不为null,就数据库中取得了记录,那么就存在了该用户,不可以注册!

String sql="select id from users where id='"+id+"'";
ResultSet rs=stmt.executeQuery(sql);
if(rs !=null)
{
out.print("用户名"+id+"已存在,请换一个用户名注册!");
}
else
{
out.print("用户名可用,请继续注册!");
}