<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"  %>
<%@ include file="conn.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
.STYLE1 {
font-size: 18px;
font-family: "华文行楷";
}
-->
</style>
</head><%
String name=(String)request.getParameter("name");
String pass=(String)request.getParameter("password");
String qrpass=(String)request.getParameter("qrpass");
String admin_name=""; Statement sts=conn.createStatement();
String sql1="select username from admin";
ResultSet rst=sts.executeQuery(sql1);
while(rst.next()){
admin_name=rst.getString(1);

if(name.equals(admin_name))
{
%>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table width="500" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#00CC99">
  <tr>
    <td height="30" bgcolor="#00CC99">&nbsp;</td>
  </tr>
  <tr>
    <td height="35">      
    <div align="center">该用户名已存在,请重新输入,<a href="reg.jsp">点此跳转回注册页面</a></div></td>
  </tr>
</table>

<%

}

else{
  String sql="insert into admin values('"+name+"','"+pass+"')";
int rs=st.executeUpdate(sql);
if(rs!=0){
out.println("注册成功");

}
else{
out.println("注册失败");
}

}
}

%>
</html>
想实现验证用户名是否存在、若不存在插入数据库、,以上代码有何问题、我找不出来啊

解决方案 »

  1.   

    org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/regok.jsp at line 5451: 
    52:  else{
    53:    String sql="insert into admin values('"+name+"','"+pass+"')";
    54:  int rs=st.executeUpdate(sql);
    55:  if(rs!=0){
    56:  out.println("注册成功");
    57: 
    以及说主键必唯一、我设的用户名为主键、
      

  2.   


    判断用户存在,总得把那么传进去吧:
    String sql1="select username from admin"+" where username='"+name+"'";
      

  3.   

    Statement sts=conn.createStatement();
    String sql1="select username from admin";
    ResultSet rst=sts.executeQuery(sql1);
    while(rst.next()){
    admin_name=rst.getString(1);if(name.equals(admin_name))
    {
    你查询的用户名是很多的,那么你这个IF判断怎么可以让他直接等呢?这也是个“一对多”的问题啊!
      

  4.   

    以LZ的想法判断用户名是否存在,应该等所有的循环都和name匹配之后,没找到相同的,才执行插入。LZ这个是发现和其中一个不相等就执行插入……
    [java-code]
    while(rst.next()){
       admin_name=rst.getString(1);
       if(name.equals(admin_name))
       {
             hasSame = true ;
             break;
       }
    }
    if(hasSame){
          //有相同的,就说已经存在
    }else{
         //插入
    }
    [/java-code]
    不过建议LZ直接用当前的name查询,会更快些吧。就是3L说的那样
      

  5.   

    话说输入java code 是什么样的标签来着??
      

  6.   

    建议LZ建主键的话已一个序列ID作为主键,因为这是基本常识。
      

  7.   

    当然加了id、只是现在有id将用户名作为主键了啊
      

  8.   

    首先你要判断输入的用户名是否存在,就要到数据库中去查:
    "select userName from tablename where userName = " + userName
    如果查到有数据则提示用户不能重复添加同一个userName,如果没有查到该数据的话,就直接insert into ……