我在登陆界面里面设置了匿名登陆与会员登陆,用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>
我建立了两个表,一个是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>
username这个变量有值吗??
你这里打印出来是什么值??是guest吗??那你会员表里有这个数据吗??如果没有的话//插入数据,本人感觉是在这边出错……
String sqli="select * from user where username='"+username+"'";
ResultSet rs;
rs=sql.executeQuery(sqli);
int userid=rs.getInt(1);userid能有值吗??