Database 选择使用SpringJDBC查询

Database 选择使用SpringJDBC查询,database,spring-jdbc,Database,Spring Jdbc,我正在使用Spring JDBC模板对表执行select语句,并出现以下错误: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT * FROM EXCEPTION WHERE CREATED_DATE BETWEEN ? AND ? AND REASON LIKE ? AND SOURCE LIKE ? ORDER BY CREATED_DATE

我正在使用Spring JDBC模板对表执行select语句,并出现以下错误:

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT * FROM EXCEPTION WHERE CREATED_DATE BETWEEN ? AND ? AND REASON LIKE ? AND SOURCE LIKE ? ORDER BY CREATED_DATE DESC FETCH FIRST ? ROWS ONLY]; nested exception is com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=?;ATE DESC FETCH FIRST;<space>, DRIVER=3.59.81
调用查询:

template.query(qry , new Mapperclass(),
            error.getStartDate(), error.getEndDate(), error.getReasonPattern(), exception.getSource(),
            maxNumberOfDetails);
如果我对
获取前N行
使用硬编码值,并从查询中省略第5个参数,则查询看起来很好,不会出现此错误。例如:

String qry = "SELECT * FROM ERROR" +
            " WHERE CREATED_DATE BETWEEN ? AND ?" +
            " AND REASON LIKE ?" +
            " AND SOURCE LIKE ?" +
            " ORDER BY CREATED_DATE DESC" +
            " FETCH FIRST 5 ROWS ONLY";


有人能帮我吗?

我想它省略了第5个参数,因为您有一个额外的参数,
新的MapperClass


由于您拥有全部5个参数,我认为您无法向其中添加
新的MapperClass()
。试着省略它。

请考虑回答,就像你不发送文本消息一样。我需要我的查询中的映射器类,猜测问题是发送行数PARAM。我很抱歉粗鲁,但是我认为这个论坛是为了帮助人们,但它看起来像是为了解决别人的错误。仅供参考,我正在编辑我的答案。是的,由于您的查询包含5个参数,您应该只发送5个参数。但您正在发送6个参数。以文本形式编写的答案并不是我们真正想要的,因此我对其进行了编辑。这就是SO的工作原理,SO公民有责任向新的回答者提供这些信息,我就是这么做的。反馈是信息,而不是攻击。能够接受反馈是一项关键的软技能,我鼓励你这样看待它。然而,正如api文档所示,答案仍然是错误的。向下投票和/或对错误答案进行评论也很重要,以便未来的访问者能够识别出解决方案是错误的还是次优的。
String qry = "SELECT * FROM ERROR" +
            " WHERE CREATED_DATE BETWEEN ? AND ?" +
            " AND REASON LIKE ?" +
            " AND SOURCE LIKE ?" +
            " ORDER BY CREATED_DATE DESC" +
            " FETCH FIRST 5 ROWS ONLY";
 template.query(qry , new Mapperclass(),
            error.getStartDate(), error.getEndDate(), error.getReasonPattern(), exception.getSource());