【问题标题】:SQL exception Parameter index out of rangeSQL异常参数索引超出范围
【发布时间】:2014-02-08 06:27:58
【问题描述】:

我正在通过一个粗略的脚本为 sql 查询发送 4 个值。这是sql查询:

SELECT full_name , sum( amount ) AS total 
    FROM hourlyusage , user
    WHERE   DAY = DATE( DATE_SUB( NOW( ) , INTERVAL ? HOUR ) ) 
            AND HOUR BETWEEN HOUR( DATE_SUB( NOW( ) , INTERVAL ? HOUR ) ) 
            AND HOUR( DATE_SUB( NOW( ) , INTERVAL 1 HOUR ) )
            AND hourlyusage.userIp = user.ip_address 
            AND (user.full_name LIKE '%?%' OR user.user_name LIKE '%?%')  GROUP BY full_name

但它给出了这样的例外。 嵌套异常:- java.sql.SQLException: 参数索引超出范围(3 > 参数个数,即 2)。

这是什么原因?

【问题讨论】:

  • 您正在使用 Prepared 语句执行此查询,对吧?

标签: mysql sql parameter-passing


【解决方案1】:
SELECT full_name , sum( amount ) AS total 
    FROM hourlyusage , user
    WHERE   DAY = DATE( DATE_SUB( NOW( ) , INTERVAL ? HOUR ) ) 
            AND HOUR BETWEEN HOUR( DATE_SUB( NOW( ) , INTERVAL ? HOUR ) ) 
            AND HOUR( DATE_SUB( NOW( ) , INTERVAL 1 HOUR ) )
            AND hourlyusage.userIp = user.ip_address 
            AND (user.full_name LIKE ? OR user.user_name LIKE ?)  GROUP BY full_name

您不能在 sql 查询中使用通配符,因此请尝试从 sql 中删除通配符并将其添加到值中。正如您在 sql 中所做的 '%?%' 表示您需要全局match.Do that in your value not in sql query.

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多