【问题标题】:Select statement between two java.sql.Date两个 java.sql.Date 之间的 select 语句
【发布时间】:2014-03-10 19:27:21
【问题描述】:

我的代码是:

    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 数据库,我必须运行此查询但返回错误。我能怎么做?谢谢。

【问题讨论】:

  • “但返回错误”是永远足够的信息。在您提出下一个问题之前,请阅读tinyurl.com/so-hints
  • 抱歉,这是我的第一个问题。
  • java.util Date-Time API 已过时且容易出错。建议完全停止使用它并切换到 2014 年 3 月发布的 modern Date-Time API。检查基于现代 Date-Time API 的 this answerthis answer

标签: java sql date


【解决方案1】:

首先,停止这样构建 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

这可能足以立即解决问题。如果不是,请提供更多详细信息。

【讨论】:

  • @MartinGian,你应该接受这个答案,因为它对你有用。
【解决方案2】:

使用PreparedStatement。 JDBC 教程包括plenty of examples

虽然我们正在讨论这个主题,但现在可能是了解SQL injection attacks(必填xkcd reference)的好时机。

【讨论】:

    猜你喜欢
    • 2011-05-27
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2015-08-30
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多