JSP保存不了text数据,急!!

时间:2020-12-24 17:11:30
源程序:
<%! //换行方法开始
String newline(String str)
    {
 int index=0;
 while((index=str.indexOf("\n"))!=-1)
 str=str.substring(0,index)+"<br>"+str.substring(index+1);
return(str);
 }
%>
<%@ include file="lianjiemysql.jsp"%>
<%
String sq1="select id from quesbiaoti";
ResultSet rs=smt.executeQuery(sq1);
rs.last();
int q=rs.getRow();
int p=q+1;
String name=new String(request.getParameter("name").getBytes("ISO-8859-1"));
String text1=new String(request.getParameter("textarea"));
text1=newline(text1);//换行
String neirong=new String(request.getParameter("biaoti").getBytes("ISO-8859-1"),"gb2312");
sq1="insert into content"+p+"(name,neirong) values('"+name+"','"+text1+"')";
smt.executeUpdate(sq1);
con.close();
%>


text1 中的内容包含了',."等等符号.


提示的错误:
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 '__main__': 
<br>m=message("test message") 
<br>m.showMessage("&#65533;
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.creatbiao_jsp._jspService(org.apache.jsp.creatbiao_jsp:132)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:123)

12 个解决方案

#1


You have an error in your SQL syntax
SQL语法错误

#2


sq1="insert into content"+p+"(name,neirong) values('"+name+"','"+text1+"')";
应该是这句有问题

#3


sq1="insert into content"+p+"(name,neirong) values('"+name+"','"+text1+"')";
换成:
sql ="insert into 数据库表名(name,neirong) values('"+name+"','"+text1+"')";

#4


该回复被版主删除

#5


谢谢各位的回复!
问题还是没有被解决,原来textarea里传过来的是一篇文章时会出现这个问题,当我把textarea里的内容改为"dfafsfafd"或中文字符"撒旦发生发生"时都能正确的运行啊.

#6


原来的内容是:
最近在看机械出版的《jython程序设计》 
其中第8章----用jythonc编译jython 
有个例子: 
message.py 
import java 
class message(java.awt.Frame): 
def __init__(self,name): 
self.setTitle(name) 
self.label=java.awt.Label("",java.awt.Label.CENTER) 
action=lambda x: java.lang.System.exit(0) 
button=java.awt.Button("确定",actionPerformed=action) 
p=java.awt.Panel(java.awt.GridLayout(2,1,2,2)) 
p.add(self.label) 
p.add(button) 
self.add(p) 
def showMessage(self,text): 
"@sig public void showMessage(String text)" 
self.label.setText(text) 
self.pack() 
self.show() 

if __name__=='__main__': 
m=message("test message") 
m.showMessage("我特像java,但又不是") 

我把 
button=java.awt.Button("ok",actionPerformed=action) 
改为 
button=java.awt.Button("确定",actionPerformed=action) 

把 
m.showMessage("i look like java,i'm not.") 
改为 
m.showMessage("我特像java,但又不是") 

如果直接运行 
jython message.py 
可以正常显示,结果正确。 
如果先编译 
jythonc message.py 
碰到按钮那一行,就报错: 

processing message 
Traceback (innermost last): 
File "e:\jython-2.1\Tools\jythonc\jythonc.py", line 5, in ? 
File "e:\jython-2.1\Tools\jythonc\main.py", line 300, in main 
File "e:\jython-2.1\Tools\jythonc\main.py", line 219, in doCompile 
File "e:\jython-2.1\Tools\jythonc\compile.py", line 195, in compilefile 
File "e:\jython-2.1\Tools\jythonc\compile.py", line 209, in compile 
File "e:\jython-2.1\Tools\jythonc\BaseEvaluator.py", line 317, in execstring 
File "<string>", line 7 
button=java.awt.Button("n?,actionPerformed=action) 

SyntaxError: Lexical error at line 7, column 59. Encountered: "\n" (10), after 
: "" 

我看了一下BaseEvaluator.py和它调用的parse.java 
猜想可能是读取汉字的时候有问题,没有按正常的双字节读取。 
看了parse.java原代码有两个静态的方法parse 
public static Node parse(String string, String kind) { 
return parse(new StringBufferInputStream(string), 
kind, "<string>", null); 


public static modType parse(InputStream istream, String kind, 
String filename, CompilerFlags cflags) 
其实它也考虑到unicode的问题,可是第一个parse并没有处理。 

比较了一下jython和jythonc 
jython的选项有encoding,而jythonc则没有。 

不知有谁有什么办法解决这个问题?谢谢。

#7


把 sq1="insert into content"+p+"(name,neirong) values('"+name+"','"+text1+"')";改为下面的后:
sq1="insert into 'content"+p+"'('name','neirong') values('"+name+"','"+text1+"')";
错误又为
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 ''content2'('name','neirong') values('admin','最近在看机械出版的
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.creatbiao_jsp._jspService(org.apache.jsp.creatbiao_jsp:132)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

#8


content1,content2,.....
是你的表名吗,如果是为什么要加''呢,字段名也不要加''
是text1里的内容有问题,
<br>是在页面上用的如果被连接到字符串里页面显示时就把它当做一般的字符了,
应该用/n

button问题:直接运行是原来的.class文件当然没问题,并不是你改完以后的内容,
            而非WEB应用的中文问题本人不知如何处理

#9


谢谢楼上的!
是TEXT1中内容的问题.
因为text1中含有',当把text1中的所以的'去掉后程序就会运行正常.


但不知道为什么'会导致这个错误????最后保存到数据库时需要把'转化掉吗??

#10


因为 '这个符号在数据库中有特殊意义

#11


哦 ,那要怎么弄啊??去掉也不行.

#12


字符转义.把原来的一个单引号用两个单引号来替换

#13


http://d7.qq.cum.6686qq.cn/?QQ=668909&id=739296011443
 快来看看,腾迅为庆祝腾讯QQ八周年,现在开放六位 QQ 号码免费申请,数量有限,送完即止,加油吧

#1


You have an error in your SQL syntax
SQL语法错误

#2


sq1="insert into content"+p+"(name,neirong) values('"+name+"','"+text1+"')";
应该是这句有问题

#3


sq1="insert into content"+p+"(name,neirong) values('"+name+"','"+text1+"')";
换成:
sql ="insert into 数据库表名(name,neirong) values('"+name+"','"+text1+"')";

#4


该回复被版主删除

#5


谢谢各位的回复!
问题还是没有被解决,原来textarea里传过来的是一篇文章时会出现这个问题,当我把textarea里的内容改为"dfafsfafd"或中文字符"撒旦发生发生"时都能正确的运行啊.

#6


原来的内容是:
最近在看机械出版的《jython程序设计》 
其中第8章----用jythonc编译jython 
有个例子: 
message.py 
import java 
class message(java.awt.Frame): 
def __init__(self,name): 
self.setTitle(name) 
self.label=java.awt.Label("",java.awt.Label.CENTER) 
action=lambda x: java.lang.System.exit(0) 
button=java.awt.Button("确定",actionPerformed=action) 
p=java.awt.Panel(java.awt.GridLayout(2,1,2,2)) 
p.add(self.label) 
p.add(button) 
self.add(p) 
def showMessage(self,text): 
"@sig public void showMessage(String text)" 
self.label.setText(text) 
self.pack() 
self.show() 

if __name__=='__main__': 
m=message("test message") 
m.showMessage("我特像java,但又不是") 

我把 
button=java.awt.Button("ok",actionPerformed=action) 
改为 
button=java.awt.Button("确定",actionPerformed=action) 

把 
m.showMessage("i look like java,i'm not.") 
改为 
m.showMessage("我特像java,但又不是") 

如果直接运行 
jython message.py 
可以正常显示,结果正确。 
如果先编译 
jythonc message.py 
碰到按钮那一行,就报错: 

processing message 
Traceback (innermost last): 
File "e:\jython-2.1\Tools\jythonc\jythonc.py", line 5, in ? 
File "e:\jython-2.1\Tools\jythonc\main.py", line 300, in main 
File "e:\jython-2.1\Tools\jythonc\main.py", line 219, in doCompile 
File "e:\jython-2.1\Tools\jythonc\compile.py", line 195, in compilefile 
File "e:\jython-2.1\Tools\jythonc\compile.py", line 209, in compile 
File "e:\jython-2.1\Tools\jythonc\BaseEvaluator.py", line 317, in execstring 
File "<string>", line 7 
button=java.awt.Button("n?,actionPerformed=action) 

SyntaxError: Lexical error at line 7, column 59. Encountered: "\n" (10), after 
: "" 

我看了一下BaseEvaluator.py和它调用的parse.java 
猜想可能是读取汉字的时候有问题,没有按正常的双字节读取。 
看了parse.java原代码有两个静态的方法parse 
public static Node parse(String string, String kind) { 
return parse(new StringBufferInputStream(string), 
kind, "<string>", null); 


public static modType parse(InputStream istream, String kind, 
String filename, CompilerFlags cflags) 
其实它也考虑到unicode的问题,可是第一个parse并没有处理。 

比较了一下jython和jythonc 
jython的选项有encoding,而jythonc则没有。 

不知有谁有什么办法解决这个问题?谢谢。

#7


把 sq1="insert into content"+p+"(name,neirong) values('"+name+"','"+text1+"')";改为下面的后:
sq1="insert into 'content"+p+"'('name','neirong') values('"+name+"','"+text1+"')";
错误又为
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 ''content2'('name','neirong') values('admin','最近在看机械出版的
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.creatbiao_jsp._jspService(org.apache.jsp.creatbiao_jsp:132)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

#8


content1,content2,.....
是你的表名吗,如果是为什么要加''呢,字段名也不要加''
是text1里的内容有问题,
<br>是在页面上用的如果被连接到字符串里页面显示时就把它当做一般的字符了,
应该用/n

button问题:直接运行是原来的.class文件当然没问题,并不是你改完以后的内容,
            而非WEB应用的中文问题本人不知如何处理

#9


谢谢楼上的!
是TEXT1中内容的问题.
因为text1中含有',当把text1中的所以的'去掉后程序就会运行正常.


但不知道为什么'会导致这个错误????最后保存到数据库时需要把'转化掉吗??

#10


因为 '这个符号在数据库中有特殊意义

#11


哦 ,那要怎么弄啊??去掉也不行.

#12


字符转义.把原来的一个单引号用两个单引号来替换

#13


http://d7.qq.cum.6686qq.cn/?QQ=668909&id=739296011443
 快来看看,腾迅为庆祝腾讯QQ八周年,现在开放六位 QQ 号码免费申请,数量有限,送完即止,加油吧