我的代码是:
java.sql.Date fromDate= new java.sql.Date(date1);
java.sql.Date toDate= new java.sql.Date(date2);
String select = "SELECT * FROM Table WHERE Date between " + fromDate+ " and" + toDate;
我正在使用Derby数据库,我必须运行此查询但返回错误。我能怎么做?感谢。
答案 0 :(得分:9)
首先,停止像那样构建SQL 。它易受SQL injection attacks转换问题(这可能就是问题)而且很难阅读。
改为使用参数化的SQL:
// TODO: Close the statement, e.g. using a try-with-resources statement
// or a finally block.
PreparedStatement statement =
conn.prepareStatement("SELECT * FROM Table WHERE Date between ? and ?");
statement.setDate(1, fromDate);
statement.setDate(2, toDate);
ResultSet results = statement.executeQuery();
// Use the results
这可能足以立即解决问题。如果不是,请提供更多详细信息。
答案 1 :(得分:2)
使用PreparedStatement
。 JDBC教程包括plenty of examples。
虽然我们在讨论这个主题,但这可能是了解SQL injection attacks(强制性xkcd reference)的好时机。