程序如下:
<%-- 
    Document   : user_add
    Created on : 2008-7-25, 10:34:59
    Author     : Administrator
--%><%@page contentType="text/html" pageEncoding="UTF-8" import="java.sql.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"><html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%
            String user1 = "sa";
            String password1= "";
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            } catch (ClassNotFoundException e) {
                e.toString();
            }
            Connection conn = DriverManager.getConnection("jdbc:odbc:ch3",user1,password1);
            Statement stmt = conn.createStatement();
            String s_UserName=request.getParameter("UserName");
            String sql="select * from user where UserName ='"+s_UserName+"'";
            ResultSet rs=stmt.executeQuery(sql);
            if(rs.next()){
                out.println("用户名"+s_UserName+"已经存在");
                out.println("<input type=button name=btn value=返回 onClick='window.history.go(-1)'>");
                }
            else{
                String s_UserPassword=request.getParameter("Password");
                String s_NickName=request.getParameter("NickName");
                String s_Sex=request.getParameter("Sex");
                String s_Email=request.getParameter("Email");
                sql="insert into user (UserName,UserPassword,NickName,Sex,Email) values ('s_UserName','s_UserPassword,'s_NichMama,'s_Sex,'s_Email')";
                stmt.executeUpdate(sql);
                out.println("注册成功,信息如下:<br>");
                out.print("用户名:"+s_UserName+"<br>");
                out.print("密码:"+s_UserPassword+"<br>");
                out.print("昵称:"+s_NickName+"<br>");
              if(s_Sex.equals("0")){
                out.print("性别:男<br>");
              }
              else{
                out.print("性别:女<br>"); 
              }  
             out.print("邮箱:"+s_Email+"<br>");
            }
            rs.close();
            stmt.close();
            conn.close();
        %> 
    </body>
</html>
运行的时候说是
exception org.apache.jasper.JasperException: An exception occurred processing JSP page /user_add.jsp at line 2926:             Statement stmt = conn.createStatement();
27:             String s_UserName=request.getParameter("UserName");
28:             String sql="select * from user where UserName ='"+s_UserName+"'";
29:             ResultSet rs=stmt.executeQuery(sql);
30:             if(rs.next()){
31:                 out.println("鐢ㄦ埛鍚�+s_UserName+"宸茬粡瀛樺湪");
32:                 out.println("<input type=button name=btn value=杩斿洖 onClick='window.history.go(-1)'>");
javax.servlet.ServletException: java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]在关键字 'user' 附近有语法错误。
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.user_005fadd_jsp._jspService(user_005fadd_jsp.java:115)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
错在那里的啊?麻烦各位大侠啊!!!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【qunqun886】截止到2008-07-26 09:21:23的历史汇总数据(不包括此帖):
    发帖的总数量:5                        发帖的总分数:100                      每贴平均分数:20                       
    回帖的总数量:1                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:4                        结贴的总分数:80                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:20                       
    结贴的百分比:80.00 %               结分的百分比:80.00 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油
      

  2.   

    你检查一下   String sql="select * from user where UserName ='"+s_UserName+"'";这条语句是否正确,看看此时s_UserName值是多少,把这条SQL打印出来看看。错误估计就是在这个地方
      

  3.   

    你这明显的错误了阿String s_UserPassword=request.getParameter("Password"); 
    String s_NickName=request.getParameter("NickName"); 
    String s_Sex=request.getParameter("Sex"); 
    String s_Email=request.getParameter("Email"); 
    sql="insert into user (UserName,UserPassword,NickName,Sex,Email) values('s_UserName','s_UserPassword,'s_NichMama,'s_Sex,'s_Email')";      //你看你的第二和第三个都少了一个'号 
    stmt.executeUpdate(sql); 
    这样插入进去的值就不是你用户输入的了 要拼凑一下SQL语句 以下代码我帮你改正了String s_UserPassword=request.getParameter("Password"); 
    String s_NickName=request.getParameter("NickName"); 
    String s_Sex=request.getParameter("Sex"); 
    String s_Email=request.getParameter("Email"); 
    sql="insert into user (UserName,UserPassword,NickName,Sex,Email) values('"+s_UserName+"','"+s_UserPassword+"','"+s_NichMama+"','"+s_Sex+"','"+s_Email+"')"; 
    System.out.println(sql);  //建议报错的时候就先把SQL语句打印出来 然后到查询分析器里面执行一下看看是否正确
    stmt.executeUpdate(sql); 
      

  4.   

    以后记住了,表名不要用关键字,很多人都喜欢用User来作为用户表的表名,很容易出这种问题,实在要用就加上[]
      

  5.   

    大侠们好,那个问题已经解决了啊,现在还有个小小的问题啊,就是  
       rs.close(); 
       stmt.close(); 
       conn.close(); 
    块啊,运行的时候会出现javax.servlet.ServletException: java.sql.SQLException: ResultSet is closed
    这样的错啊,如果是吧   rs.close(); 取消了啊,就没有错误了啊,且运行正常,麻烦各位给说说啊,小弟很不解啊
    在次谢谢大侠们
      

  6.   

    一般来说,这种情况是前面的resultset已经关闭了,你却试图再次关闭它造成的。
    一般来说,关闭了statement以后,与之对应的resultset就自动关闭了,不用再显示的关闭resultset,所以可以利用这点来简化处理。