log4j:ERROR Failed to excute sql错误~
异常信息如下:
- Java code
log4j:ERROR Failed to excute sqljava.sql.SQLException: Invalid SQL statement or JDBC escape, terminating ']' not found. at net.sourceforge.jtds.jdbc.SQLParser.parse(SQLParser.java:1155) at net.sourceforge.jtds.jdbc.SQLParser.parse(SQLParser.java:156) at net.sourceforge.jtds.jdbc.JtdsStatement.executeImpl(JtdsStatement.java:684) at net.sourceforge.jtds.jdbc.JtdsStatement.executeUpdate(JtdsStatement.java:1166) at net.sourceforge.jtds.jdbc.JtdsStatement.executeUpdate(JtdsStatement.java:1119) at org.apache.log4j.jdbc.JDBCAppender.execute(JDBCAppender.java:178) at org.apache.log4j.jdbc.JDBCAppender.flushBuffer(JDBCAppender.java:250) at org.apache.log4j.jdbc.JDBCAppender.append(JDBCAppender.java:146) at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251) at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66) at org.apache.log4j.Category.callAppenders(Category.java:206) at org.apache.log4j.Category.forcedLog(Category.java:391) at org.apache.log4j.Category.log(Category.java:856) at org.apache.commons.logging.impl.Log4JLogger.warn(Log4JLogger.java:234) at com.opensymphony.xwork2.util.logging.commons.CommonsLogger.warn(CommonsLogger.java:60) at com.opensymphony.xwork2.ognl.OgnlValueStack.handleOgnlException(OgnlValueStack.java:198) at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:162) at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:151) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:288) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:199) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498) at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:619)
执行的action如下:
- Java code
public String findByEEscaleJson() throws Exception { HttpServletResponse response = ServletActionContext.getResponse(); response.setCharacterEncoding("UTF-8"); PrintWriter pw = response.getWriter(); List allValue = this.viewEEpOtherServiceDAO.findByEEscale(new String( escale.getBytes("ISO8859-1"), "UTF-8")); result = new ArrayList(); Iterator it = allValue.iterator(); while (it.hasNext()) { Object[] all = (Object[]) it.next(); ViewEEpOtherId v = new ViewEEpOtherId(); // id.eno,id.ename,id.eaddress,id.ephone,id.present,id.email,id.website,id.esuoyou,id.tno v.setEno((String) all[0]); v.setEname((String) all[1]); v.setEaddress((String) all[2]); v.setEphone((String) all[3]); v.setEpresent((String) all[4]); v.setEmail((String) all[5]); v.setWebsite((String) all[6]); v.setEsuoyou((String) all[7]); v.setEscale((String) all[8]); v.setEincome((Double) all[9]); result.add(v); } JSONArray array = JSONArray.fromObject(result); pw.print(array.toString()); return null; }DAOImpl 里面 :
- Java code
public List findByEEscale(String scale) { // TODO Auto-generated method stub String hql ="select id.eno,id.ename,id.eaddress,id.ephone,id.epresent,id.email,id.website,id.esuoyou,id.escale,id.eincome from ViewEEpOther where id.escale like '"+"%"+scale+"%"+"'"; List result = this.getHibernateTemplate().find(hql); return result; }其他的也是按照这样查询的呢,其他的不报错,就这个报错。
[解决办法]
where id.escale like '"+"%"+scale+"%"+"'";
估计是scale有乱码。。。
new String(escale.getBytes("ISO8859-1"), "UTF-8"),我没见过ISO8859-1,我都是用ISO-8859-1。。。
你试试看传一个英文或数字进去,如果没错的话 ,就是这个原因了。。
[解决办法]
JDBC还是建议用绑定变量的方式去操作数据库。
大型项目的话会优化很多运行效率。
另外如果你那个变量是字符串的话。还需要写个方法对里面的特殊字符进行转义操作。
不然的话估计会有问题哦。比如说你的字符串里有个%怎么办。。
[解决办法]
同一个form提交了两个相同属性,过去的值是数组。。。你后台不是数组。所以传进去的参数是一串字符。。是这样的吧
[解决办法]
[解决办法]
LZ啊 你这hql语句里面全部是id.字段 但是你这个id是什么啊?,id.website,id.esuoyou,id.escale,id.eincome from ViewEEpOther id where...