自己开发的一个论坛,在回复帖子时,页面次序为从帖子列表list.jsp中进入relist.jsp,relist.jsp中发表回复信息在recheck.jsp确认,回复成功的话response.sendRedirect回到relist.jsp,这是页面流程,但当第一次回复后(成功),第二次继续回复信息时就出现异常,是在recheck.jsp确认信息时出现的,异常发生在以下两句
String sql="insert into rearticle(articleId,reauthor,repostdate,reContent,blockName) values('"+articleId+"','"+username+"','"+repostdate+"','"+recontent+"','"+blockname+"')";
int value=stmt.executeUpdate(sql); //这一句出现异常
异常信息为
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '66'','harryzyp','2006-11-18 10:39:36','asdfa','JSP')' at line 1
小弟实在没办法,如果给出全代码,我估计没人看贴了,所以问题只能这么笼统的说这些,如果有人遇到过同样问题那就更好不过了,而且更希望高手能帮我分析下错误的可能原因,万分感谢...
String sql="insert into rearticle(articleId,reauthor,repostdate,reContent,blockName) values('"+articleId+"','"+username+"','"+repostdate+"','"+recontent+"','"+blockname+"')";
int value=stmt.executeUpdate(sql); //这一句出现异常
异常信息为
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '66'','harryzyp','2006-11-18 10:39:36','asdfa','JSP')' at line 1
小弟实在没办法,如果给出全代码,我估计没人看贴了,所以问题只能这么笼统的说这些,如果有人遇到过同样问题那就更好不过了,而且更希望高手能帮我分析下错误的可能原因,万分感谢...
exception
javax.servlet.ServletException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
root cause
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
root cause这个好像是说驱动的问题
我以前查过有人也遇到这样的问题,说是版本的问题,所以我试过了两个结合
Tomcat5.5+mysql5.0(以前的)
Tomcat5.0.12+mysql4.1(现在的) 都出现同样的错误
等待中。
但我不明白的是,我第一发贴能成功,第二次怎么就不行了呢,郁闷
唯一.. 意思说换字段名?
但这个错误com.mysql.jdbc.exceptions.MySQLSyntaxErrorException又好像是说驱动问题
楼主你的论坛的发言文本框怎么写的,怎么样能实现把用户的输入格式也保存到数据库,是转成
html标签吗??谢谢了(最好给个代码看看)
我把SQL语句再发一下
String sql="insert into rearticle(articleId,reauthor,repostdate,reContent,blockName) values('"+articleId+"','"+username+"','"+repostdate+"','"+recontent+"','"+blockname+"')";我感觉SQL语句应该没错,如果有错的话,第一次回复怎么能成功呢?
qiaodajun() 这位兄弟说的是不是要识别空格跟换行的这些东西啊?
String sql="insert into rearticle(articleId,reauthor,repostdate,reContent,blockName) values('"+articleId+"','"+username+"','"+repostdate+"','"+recontent+"','"+blockname+"')";
回qiaodajun的,这个其实很简单的,插入的时候不用变换,取出的时候按下面变换就行了String content="";
String temp=null;
temp=rearticle.getString("articleContent");
for(int m=0;m<temp.length();m++)
{
if(temp.charAt(m)=='\n')
content+="<br> ";
else
content+=temp.charAt(m);
}
String sql="insert into rearticle(articleId,reauthor,repostdate,reContent,blockName) values('"+articleId+"','"+username+"','"+repostdate+"','"+recontent+"','"+blockname+"')";
//----------
你这也叫打印出的sql语句?
可能是你在页面重定向的时候,request里面有些关于被回复文章的数据已经不存在了,所以在生成SQL语句的时候,有些COLUMN就为空了,因此报了SQL语法错误.你不要用重定向,改成转发试试.
用system.out.pringln(sql);看日志里两次的SQL有什么区别,没区别的话分别放到mysql中去试就知道什么问题了
我的response.sendRedirect("relist.jsp?articleId='"+articleId+"'&type='"+type+"'");
这一句有问题,同时有两个参数时应该不是这样写,因为我发现地址栏出现
http://localhost:8080/haxinbbs/relist.jsp?articleId='1'&type='normal'
这样的,也就是兄弟们都说的都了'号但现在我还是不知道应该怎么写,articleId,type都是String类型的变量
或者是:response.sendRedirect("relist.jsp?articleId="+articleId+"&type="+type);
或者javascript:history.go(-1)
response.sendRedirect("relist.jsp?articleId=<%=request.QueryString("articleId")%>&type=<%=request.QueryString("type")%>")