报错信息:
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;i<document.all.id.length;i++){
document.all.id[i].checked = blnChecked;
}
}catch(e){
}
} //getFirstChecked
function getFirstChecked(){
try{
for(var i=1;i<document.all.id.length;i++){
if(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"><div align="center" class="listtitle">留言主题</td>
<td width="300" bgcolor="#CCCCCC"><div align="center" class="listtitle">留言内容</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"><a href="view.jsp?id=<%=rs.getInt("id")%>"><%=encodeHTML(rs.getString("Title"))%></a></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;i<aryID.length;i++){
ResultSet 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");
%>要是去掉删除里面的查询一点事也没有,但是多个查询就不行了,真得很着急的,下周就交活了,求求给位了,救救我吧

解决方案 »

  1.   

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

  2.   

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

  3.   

    是啊,既然是javax.servlet.ServletException: [Microsoft][SQLServer 2000 Driver for JDBC]这样的异常,肯定和SQL语句的执行有关系。你把组合成的SQL语句输出出来,在查询分析器里运行一下。这样很容易看到问题。
      

  4.   

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

  5.   

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

  6.   

    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的表单元素
    谢谢各位高手了,这问题真得很怪的,我也真是急着解决的,在帮忙想想办法吧 小弟我在此谢谢各位高手了,若问题解决我可再加分送。
      

  7.   

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

  8.   

    lcllcl987(毛爷爷)
    你是安博的么?
    ------------------------
     不是的,呵呵
    我在武汉