2 回答
TA贡献1877条经验 获得超1个赞
PreparedStatement
除了 Safeer Ansari 的回答之外,我将举例说明如何 PreparedStatement
在这种情况下使用它以及为什么它会有利。
对于LocalDateTime
参数,请使用PreparedStatement::setObject
.
和可以这样重写Statement
:String
Connection con = DBConnection.getConnection();
String query = "SELECT * FROM appointment WHERE start BETWEEN ? AND ? ;";
PreparedStatement statement = con.prepareStatement(query)
statement.setObject(1,ldt);
statement.setObject(2,ldt2);
ResultSet rs = statement.executeQuery();
请注意如何构建String query
语句不再需要任何String
串联,而是使用?
as 位置来设置变量。使用动态查询时使用PreparedStatement
over没有任何缺点。Statement
注意: 我没有包括任何关闭资源或exception
处理以保持示例简单。使用try-with-resources来完成这项工作。
TA贡献1804条经验 获得超3个赞
错误在您的查询字符串中,因为ldt2之后没有结束单引号
这是您的查询的样子:
String query = "SELECT * FROM appointment WHERE start BETWEEN '" + ldt + "' AND '" + ldt2 + "'";
此外,我建议将 String.format() 用于字符串格式化目的,而不是尝试连接如此复杂的字符串。
我希望这能解决你的问题
添加回答
举报