-1

嗨,我已经开发了示例。这是我的代码:

public class GetMonthFromDate {
  public int data() {
    int count=0;
    java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis());
    java.sql.Date date = new java.sql.Date(timeStamp.getTime()); 

    //count++;

    try {
      Class.forName("com.mysql.jdbc.Driver");
      Connection con =
        DriverManager.getConnection("jdbc:mysql://localhost:3306/xcart-432pro",
                                    "root", "");

      PreparedStatement statement =
        con.prepareStatement("select * from xcart_order_status_history where date_time='date'");
      ResultSet result = statement.executeQuery();
      while (result.next()) {
        // Do something with the row returned.
        count++; //if the first col is a count.
      }
    } catch(Exception exc) {
      System.out.println(exc.getMessage());
    }

    return count;
  }
}

上面的代码对我不起作用。

在这里我使用了这个代码

java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis());
java.sql.Date date = new java.sql.Date(timeStamp.getTime()); 

意味着只给出输出2012-08-08。所以只有我必须在我的代码中调用日期。但这对我不起作用。显示的返回计数值为0. o 是错误的。2只有正确。因为匹配的查询在我的数据库中有 2 个值。

select * from xcart_order_status_history where date_time='date'
4

4 回答 4

0

您尚未将日期值设置为准备好的语句。

于 2012-08-08T07:03:02.943 回答
0

尝试:

PreparedStatement statement = con.prepareStatement("select * from xcart_order_status_history where date_time=?");
statement.setDate(1, date);

如果您只需要计数,您也不应该选择 *。您应该使用 select count(*)

于 2012-08-08T07:05:23.077 回答
0

您对 PreparedStatement 的使用是完全错误的。

您不传递变量名,而是传递占位符,然后显式传递它们的值:

PreparedStatement statement =
    con.prepareStatement("select * from xcart_order_status_history where date_time=?");
statement.setDate(1, date);
ResultSet result = statement.executeQuery();

而且您永远不会?在语句中加上引号。对数据类型的调整将由 JDBC 驱动程序处理。

您可能需要重新阅读 JDBC 教程。您似乎错过了一些基本概念:http ://docs.oracle.com/javase/tutorial/jdbc/index.html

于 2012-08-08T07:06:11.523 回答
0
public class GetMonthFromDate {
    public int data() {
        ...
        java.sql.Timestamp timeStamp = new Timestamp(System.currentTimeMillis());
        ...
        PreparedStatement statement = con.prepareStatement("select * from xcart_order_status_history where date_time=?");
        statement.setTimestamp(1,timeStamp);
        ...

        return count;
    }
}
于 2012-08-08T07:06:58.927 回答