美文网首页
java.sql.SQLException: No value

java.sql.SQLException: No value

作者: 耗纸锅 | 来源:发表于2018-08-13 14:51 被阅读0次

    今天,遇上了java.sql.SQLException: No value specified for parameter3
    List<Map<String, String>> list = (ArrayList) jdbcTemplate.query("select packetRule.ruleName , packetRule.paraCheck , packetRule.ruleCheck ,packetRule.type ,packetManager.packetName " +
    " from packetRule,packetManager where" +
    " ruleName like concat('%',?,'%') " +
    "or paraCheck like concat('%',?,'%')" +
    "or ruleCheck like concat('%',?,'%')" +
    " AND packetRule.packetId = packetManager.id AND packetManager.packetName = '" + packetName +
    "'ORDER BY packetRule.id DESC ",
    new PreparedStatementSetter() {
    @Override
    public void setValues(java.sql.PreparedStatement preparedStatement) throws SQLException {
    preparedStatement.setString(1, searchKey);
    preparedStatement.setString(2, searchKey);
    }
    },
    new RowMapperResultSetExtractor(new RowMapper() {
    public Object mapRow(ResultSet rs, int index)
    throws SQLException {
    Map u = new HashMap(); //可以是自己的JavaBean值对象(简单Java对象POJO)
    u.put("ruleName", rs.getString("ruleName"));
    u.put("paraCheck", rs.getString("paraCheck"));
    u.put("ruleCheck", rs.getString("ruleCheck"));
    u.put("type", rs.getString("type"));
    u.put("packetName", rs.getString("packetName"));
    return u;
    }
    }));
    排查后发现,是由于第三个参数没有对应上的原因。故:增加一个值:
    preparedStatement.setString(3, searchKey);

    相关文章

      网友评论

          本文标题:java.sql.SQLException: No value

          本文链接:https://www.haomeiwen.com/subject/ulhubftx.html