我在登陆界面里面设置了匿名登陆与会员登陆,用session进行传递。当匿名登陆的时候传递的是一个guest的作者,会员登陆传递真实的姓名。但是匿名登陆插入数据正确,会员登陆插入数据抛出异常。
我建立了两个表,一个是user有字断(userid、username、password、name、email、sex、job)表,一个是message字段(message、userid、title、comment)表。userid是message表的外键。userid与messageid是自动增一的。
<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="javab.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<HTML>
<BODY>
    <% 
       String record=new String();       String title=null;
       String comment=null;         
       //String username=null;
       
        
       
       String username=(String)session.getAttribute("username");       
       // String username=request.getParameter("username");
        out.print(username);
        title=request.getParameter("title");
        comment=request.getParameter("re");
        
       
       
          Connection con;
          Statement sql;
        
         try{
               Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            }
            catch(ClassNotFoundException e)
            {
                out.print("出错1"+e);
            }
            try{
                  con=DriverManager.getConnection("jdbc:odbc:messagedb","sa","sa");
                  sql=con.createStatement();                 if(title!=null&&comment!=null&&!title.trim().equals("")&&!comment.trim().equals(""))
                 {  
                     if(!username.trim().equals("guester")) 
                     {
                       //插入数据,本人感觉是在这边出错……
                       String sqli="select * from user where username='"+username+"'";
                       ResultSet rs;
                       rs=sql.executeQuery(sqli);
                      int userid=rs.getInt(1);
                                 
                       String sqls="insert into message(userid,title,comment)values('"+userid+"','"+title+"','"+comment+"')";
                       int temp=sql.executeUpdate(sqls);            
                       if(temp>0)
                      { 
                        session.setAttribute("judge","lysuc");                        
                        response.sendRedirect("judge.jsp"); 
                      }
                      else
                      { 
                        session.setAttribute("judge","lyfail"); 
                        response.sendRedirect("judge.jsp");     
                      }
                     }
                     else
                     {
                     
                     String sqlss="insert into message(userid,title,comment)values(0,'"+title+"','"+comment+"')";
                       int temp=sql.executeUpdate(sqlss);            
                       if(temp>0)
                      { 
                        session.setAttribute("judge","lysuc");                        
                        response.sendRedirect("judge.jsp"); 
                      }
                      else
                      { 
                        session.setAttribute("judge","lyfail"); 
                        response.sendRedirect("judge.jsp");     
                      }    
                     
                     
                     } 
                  } 
                  else if(title==null&&comment==null)
                  {
                  %>
                  
                  <CENTER>
          <FORM action="liuyan2.jsp " method=post name="form">
           <H1>留言板</H1>
           <HR>
          <BR>
          <BR>
            作者:
            <%=username %>
            <BR>
            <BR>
            标题:
            <INPUT type="text" name="title">
            <BR>
            <BR>
            内容:
            <BR>
            <textarea name="re" rows="15" cols="25"></textarea>
            <BR><BR>
            <INPUT type="submit" value="添加到留言板" name="submit">
            <INPUT type="reset" value="重新填写留言板" name="reset"> 
          </FORM>         
         </CENTER>
                  
                  
                  
                  <%
                  }
                  else
                  {
                            session.setAttribute("judge","error1");
                     response.sendRedirect("judge.jsp");
                  }
                
               }
                catch(SQLException e)
            {
             out.print("出错2"+e);
            }     %>
    
    <a href="liuyan1.jsp">返回留言板</a>
    
    
    <BR><BR>
    <A HREF="liuyan1.jsp">返回留言板首页</A>
    </BODY></HTML>

解决方案 »

  1.   

    String sqli="select * from user where username='"+username+"'";
    username这个变量有值吗??
      

  2.   

    有的!我在上面有用out.print(username)打印出来
      

  3.   

    String sqli="select * from [user] where username='"+username+"'";这样试试
      

  4.   


    你这里打印出来是什么值??是guest吗??那你会员表里有这个数据吗??如果没有的话//插入数据,本人感觉是在这边出错……
      String sqli="select * from user where username='"+username+"'";
      ResultSet rs;
      rs=sql.executeQuery(sqli);
      int userid=rs.getInt(1);userid能有值吗??
      

  5.   

    我少了一句if(rs.next()){……}加了就插入正确了。