【发布时间】:2016-09-02 23:48:12
【问题描述】:
我对 Servlet 的经验有限,我想像这样单击 AllDelete 按钮 this,但是eclipse有错误:
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 '-6,6' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3124)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1149)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1262)
at com.newsmanager.dao.NewsDao.getNewsList(NewsDao.java:92)
at com.newsmanager.servlet.NewsServlet.doPost(NewsServlet.java:75)
at com.newsmanager.servlet.NewsServlet.doGet(NewsServlet.java:21)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Servlet Java 代码:
else if ("allDelete".equals(oprate)) {
String[] deleteId = request.getParameterValues("deleteId");
if (deleteId != null) {
//the parameter might have more than one value, use getParameterValues(java.lang.String).
//And getParameterValues returns a String[];22
for (String string : deleteId) {
Integer Did = Integer.valueOf(string);
NewsDao.deleteNewsBYId(Did);
}
}
response.sendRedirect("NewsServlet");
}
JSP 代码:
<input type="submit" value="AllDelete" />
<input type="hidden" id="oprate" name="oprate" value="allDelete" />
<td align="center"><input type="checkbox" name="deleteId" value="${news.newsId}" /></td>
我在网上搜索了很长时间。但是没有用。请帮助或尝试提供一些想法如何实现这一目标
来自 NewsDao.java 的部分代码
public List<News> getNewsList(Integer pageNumber, Integer pageSize) {
List<News> NewsList = new ArrayList<News>();
conn = DbConn.getconn();
try {
int startSize = (pageNumber - 1) * pageSize;
String sql = "select * from news limit " + startSize + "," + pageSize;
st = conn.createStatement();
rs = st.executeQuery(sql);
【问题讨论】:
-
显示的代码不是产生错误的代码。问题出在
com.newsmanager.dao.NewsDao.getNewsList(NewsDao.java:92)中,从错误的外观来看,您的查询本身有错误,或者您将值连接到查询字符串中,而不是正确使用参数。 -
衷心感谢您的回答:),我已经添加了NewsDao.java的部分代码,我该怎么办?
标签: mysql eclipse servlets jdbc