我一直在整个数据库中使用 PreparedStatements,您可以在其中使用setDate(index, data)
,但是使用这样的 Date 对象是否有效?
"SELECT * FROM table WHERE date BETWEEN " + date + " AND " + otherDate
有什么在线工具可以用来测试吗?
我不相信这个功能会起作用:
"SELECT * FROM table WHERE date BETWEEN " + date + " AND " + otherDate
由于您尝试将两个Date
对象与多个String
文字连接起来。您需要使用 aDateFormatter
将其Date
转换为String
.
您应该坚持使用PreparedStatement
s 并避免通过连接字符串/值来创建 SQL 语句。PreparedStatement
将为您提供一些保护,而sql injection
字符串连接方法将使您面临 sql 注入的风险。
最好的方法是以数据库可识别的格式格式化您的日期,当您直接附加到 时String
,将调用日期toString()
,并且我怀疑数据库是否支持该语法,您最好执行以下操作:
final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = "SELECT * FROM table WHERE date BETWEEN '"
+ formatter.format(date) + "' AND " + formatter.format(otherDate) + "'";
此外,正如凯文所说,宁愿坚持PreparedStatement
s,因为这可以为您提供更多保护。