首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

log4j:ERROR Failed to excute sql异常

2012-01-15 
log4j:ERROR Failed to excute sql错误~异常信息如下:Java codelog4j:ERROR Failed to excute sqljava.sql

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提交了两个相同属性,过去的值是数组。。。你后台不是数组。所以传进去的参数是一串字符。。是这样的吧
[解决办法]
探讨
谢谢了先,
我这个 不管数字、字母、中文都抱这个错误呢~
ISO-8859-1改成这样了依然报错~

引用:
where id.escale like '"+"%"+scale+"%"+"'";

估计是scale有乱码。。。

new String(escale.getBytes("ISO8859-1"), "UTF-8"),我没见……

[解决办法]
LZ啊 你这hql语句里面全部是id.字段 但是你这个id是什么啊?,id.website,id.esuoyou,id.escale,id.eincome from ViewEEpOther id where...

热点排行