您好我已经开发了示例。 这是我的代码:
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'
答案 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;
}
}