返回java中的计数值

时间:2012-08-08 05:44:55

标签: java date jdbc timestamp

您好我已经开发了示例。 这是我的代码:

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。所以只有我必须在我的代码中调用date。但它对我不起作用..displayed返回计数值为0。 o错了。 2只有正确。因为匹配的查询在我的数据库中有2个值。

select * from xcart_order_status_history where date_time='date'

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试:

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

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

答案 2 :(得分: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驱动程序处理。

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

答案 3 :(得分: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;
    }
}