站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题请问为什么会出现“在关键字 'on' 附近有语法错误”这样的错误???我都困惑了好几天了,真得很急,多谢大侠帮忙!!!!!!!!!

请问为什么会出现“在关键字 'on' 附近有语法错误”这样的错误???我都困惑了好几天了,真得很急,多谢大侠帮忙!!!!!!!!!

摘要: 请问为什么会出现“在关键字 'on' 附近有语法错误”这样的错误???我都困惑了好几天了,真得很急,多谢大侠帮忙!!!!!!!!!


报错信息:
javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]在关键字 'on' 附近有语法错误。
前一个界面提交id,但是提交一个时候没事,但是要是一次选中多个提交后执行多条sql后就不行了,我sql里根本没有on呀,真是搞糊涂我了,求求各位帮帮我吧,真快不行了。
我怀疑是多选问题。
代码如下
显示页(通过点击删除进行处理)
<script>
//Delete
function doDelete(){
var strID = getFirstChecked();
if(strID==""){
alert("请选择你要删除的<%=strDataName%>!")
return false;
}
if(confirm("你确定要删除?")){
frmAction.action = "doDelete.jsp";
frmAction.submit();
return false;
}
}
//selectAll
function selectAll(){
try{
var blnChecked = document.all.id[0].checked;
for(var i=1;idocument.all.id[i].checked = blnChecked;
}
}catch(e){
}
}

//getFirstChecked
function getFirstChecked(){
try{
for(var i=1;iif(document.all.id[i].checked){
return document.all.id[i].value;
}
}
}catch(e){
}
return "";
}
</script>
<table width="100%" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td align="left"><input type="button" name="cmdDelete" value="删除" onclick="return(doDelete());">
</td>
</tr>
</table>

<table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#999999">
<tr height="24">
<td width="5" valign="middle" bgcolor="#CCCCCC" align="center"><input type="checkbox" name="id" onclick="selectAll();"></td>

<td width="150" bgcolor="#CCCCCC">
留言主题</td>
<td width="300" bgcolor="#CCCCCC">
留言内容</td>
<td width="150" bgcolor="#CCCCCC" align="center" class="listtitle">留言人</td>
<td width="150" bgcolor="#CCCCCC" align="center" class="listtitle" >留言时间</td>
</tr>
<%


strSQL = " select * from MessageBoard order by CreateDate ";

String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);



rs=databean.getResultSet(strSQL);
while(rs.next()){



%>
<tr height="23">
<td valign="middle"align="center">
<input type="checkbox" name="id" value="<%=rs.getInt("id")%>">
</td>

<td class="page" style="word-break:break-all" align="center">"><%=encodeHTML(rs.getString("Title"))%></td>
<td align="center" class="page" style="word-break:break-all"><%=getHTMLString(getinterceptString(rs.getString("Description"),10))%></td>
<td align="center" class="page" style="word-break:break-all"><%=getHTMLString(rs.getString("UserName"))%></td>

<%//java.util.Date ddd=(java.util.Date)(rs.getDate("CreateDate").getTime());
if(rs.getTimestamp("CreateDate")!=null){
%>
<td align="center"class="page" style="word-break:break-all"><%=sdf.format(rs.getTimestamp("CreateDate"))%></td>
</tr>
<%}else{%>
<td align="center"class="page">&nbsp;</td>
</tr>

<%}
}
databean.close(rs);
%>


</table>

删除页:
<%@ page contentType="text/html; charset=gb2312"%>

<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="cn.com.SE.database.DataBean"%>
<%@ page import="cn.com.SE.system.*"%>

<%
request.setCharacterEncoding("gb2312");
String [] aryID = request.getParameterValues("id");
if(aryID==null){
out.println("传入的参数是错误的,请选择要编辑的选项!");
return;
}
if(aryID.length==0){
out.println("输入的值是空的");
return;
}

String strSQL = "";
String strsql = "";
String strName = "";
DataBean databean = new DataBean();
for(int i=0;iResultSet rs = null;
strsql="select Title from MessageBoard where id= " + aryID[i];
DataBean db = new DataBean();
rs = db.getResultSet(strsql);
if(rs.next())
strName = (String)rs.getString("Title");
db.close(rs);
strSQL = " delete from MessageBoard where id="+aryID[i];
databean.getDelete(strSQL);
Log.raiseLog("留言管理","删除留言[" + strName + "]");
}
databean.close();
response.sendRedirect("index.jsp");
%>

要是去掉删除里面的查询一点事也没有,但是多个查询就不行了,真得很着急的,下周就交活了,求求给位了,救救我吧


显然是sql语句错误
把执行注释,打印sql语句看是什么。




检查
<input type="checkbox" name="id" value="<%=rs.getInt("id")%>">
生成的客户端的html里 value是否都是数字。
检查生成的html客户端是否有除此之外的name=id的表单元素


SQL语句拼的有问题


是啊,既然是javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]这样的异常,肯定和SQL语句的执行有关系。

你把组合成的SQL语句输出出来,在查询分析器里运行一下。这样很容易看到问题。


要学会通过日志来调试程序,这个很重要的


不要单纯地使用Statement, 在适合的情况下可以使用PreparedStatement, 使用占位符再填入数据, 这样会更好一点...


你把组合成的SQL语句输出出来,在查询分析器里运行一下。这样很容易看到问题


select Title from MessageBoard where id= on

这就是打出来的sql语句了,我根本就没有on这个关键字呀。
另外:
to: net_lover(【孟子E章】)
首先
<input type="checkbox" name="id" value="<%=rs.getInt("id")%>">
生成的客户端的html里 value确实都是数字。
而且
生成的html客户端是没有除此之外的name=id的表单元素
谢谢各位高手了,这问题真得很怪的,我也真是急着解决的,在帮忙想想办法吧 小弟我在此谢谢各位高手了,若问题解决我可再加分送。


问题解决了是<input>的value问题,要是没有的话在进行操作时会自动地加一个on的
多谢各位的回答,帮助。
另外:
lcllcl987(毛爷爷)
你是安博的么?


↑返回目录
前一篇: jsp在LINUX下的环境应该怎么搭建
后一篇: -lt