Java mysql介于和之间,通过JDBC preparedstatement使用-获取参数索引超出范围异常
从select查询参数化值(日期值介于和之间) 我的问题Java mysql介于和之间,通过JDBC preparedstatement使用-获取参数索引超出范围异常,java,mysql,jdbc,Java,Mysql,Jdbc,从select查询参数化值(日期值介于和之间) 我的问题 SELECT COUNT(*) AS assignedtotalcount FROM ticket, ticket_data WHERE ticket.`ticket_id` = ticket_data.`ticket_id` AND ticket.`created` BETWEEN '?' AND '?' 从上面的查询中,参数化了介于和之间的值 Java代码 static String dateFrom = "2018-01-01";
SELECT COUNT(*) AS assignedtotalcount FROM ticket, ticket_data
WHERE ticket.`ticket_id` = ticket_data.`ticket_id`
AND ticket.`created` BETWEEN '?' AND '?'
从上面的查询中,参数化了介于和之间的值
Java代码
static String dateFrom = "2018-01-01";
static String dateTo = "2018-01-31";
String query = reportQuery.toString();
statement = connection.createStatement();
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, dateFrom);
preparedStatement.setString(2, dateTo);
resultSet = preparedStatement.executeQuery(query);
执行时,我得到以下异常
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
请帮我解决不要引用占位符。您需要将
“?”
更改为?
所以查询变成这样
SELECT COUNT(*) AS assignedtotalcount FROM ticket, ticket_data
WHERE ticket.`ticket_id` = ticket_data.`ticket_id`
AND ticket.`created` BETWEEN ? AND ?
不要引用占位符。您需要将
“?”
更改为?
所以查询变成这样
SELECT COUNT(*) AS assignedtotalcount FROM ticket, ticket_data
WHERE ticket.`ticket_id` = ticket_data.`ticket_id`
AND ticket.`created` BETWEEN ? AND ?
另一方面,我们更喜欢向查询传递对象而不是字符串<代码>LocalDate fromDate=LocalDate.of(2018年1月1日)然后是
preparedStatement.setObject(1,dateFrom)代码>,等等。另外,正如另一条评论所说,通过JDBC 4.2和更高版本传递智能对象而不是哑字符串:myPreparedStatement.setObject(…,LocalDate.parse(“2018-01-31”)代码>相关:可能重复的作为旁白,更喜欢向查询传递对象而不是字符串<代码>LocalDate fromDate=LocalDate.of(2018年1月1日)然后是preparedStatement.setObject(1,dateFrom)代码>,等等。另外,正如另一条评论所说,通过JDBC 4.2和更高版本传递智能对象而不是哑字符串:myPreparedStatement.setObject(…,LocalDate.parse(“2018-01-31”)代码>相关:可能与您的问题重复。您是否可以将问题标记为已解决?您是否可以将问题标记为已解决