繁体   English   中英

在SQLite JDBC查询中附加java.sql.Date

[英]Appending a java.sql.Date in an SQLite JDBC query

我在整个数据库中都使用了PreparedStatements,可以在其中使用setDate(index, data) ,但是使用这样的Date对象会起作用吗?

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

我可以使用任何在线工具对此进行测试吗?

我不认为此功能会起作用:

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

由于您尝试使用两个String文字连接两个Date对象。 您将需要使用DateFormatterDate转换为String

您应该坚持PreparedStatement并避免通过连接字符串/值来创建SQL语句。 PreparedStatement将为您提供一些防止sql injection保护,而String串联方法将使您面临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) + "'";

另外,正如kevin所述,请坚持使用PreparedStatement ,因为这可以为您提供更多保护。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM