0

我一直在整个数据库中使用 PreparedStatements,您可以在其中使用setDate(index, data),但是使用这样的 Date 对象是否有效?

"SELECT * FROM table WHERE date BETWEEN " + date + " AND " + otherDate

有什么在线工具可以用来测试吗?

4

2 回答 2

1

我不相信这个功能会起作用:

"SELECT * FROM table WHERE date BETWEEN " + date + " AND " + otherDate

由于您尝试将两个Date对象与多个String文字连接起来。您需要使用 aDateFormatter将其Date转换为String.

您应该坚持使用PreparedStatements 并避免通过连接字符串/值来创建 SQL 语句。PreparedStatement将为您提供一些保护,而sql injection字符串连接方法将使您面临 sql 注入的风险。

于 2013-01-22T10:11:01.237 回答
1

最好的方法是以数据库可识别的格式格式化您的日期,当您直接附加到 时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) + "'";

此外,正如凯文所说,宁愿坚持PreparedStatements,因为这可以为您提供更多保护。

于 2013-01-22T10:12:29.243 回答