返回java中的计数值
嗨,我有一个例子。 这是我的代码:返回java中的计数值,java,date,jdbc,timestamp,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++;
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。但它对我不起作用。显示返回的计数值为0
。o是错的<代码>2仅正确。因为匹配的查询在我的数据库中有2个值
select * from xcart_order_status_history where date_time='date'
您尚未为准备好的语句设置日期值。请尝试:
PreparedStatement statement = con.prepareStatement("select * from xcart_order_status_history where date_time=?");
statement.setDate(1, date);
如果只需要计数,也不应执行select*。您应该使用select count(*)您对PreparedStatement的使用完全错误 您不传递变量名,而是传递占位符,然后明确传递它们的值:
PreparedStatement statement =
con.prepareStatement("select * from xcart_order_status_history where date_time=?");
statement.setDate(1, date);
ResultSet result = statement.executeQuery();
而且你从不把?
放在语句中的引号里。数据类型的调整将由JDBC驱动程序处理
您可能需要重新阅读JDBC教程。您似乎错过了一些基本概念:如何将日期值设置为prepared语句在我的控制台参数索引上显示以下消息超出范围(1>参数数量,即0)。0是否将
?
放在引号中?是的,上面的代码已被处理,返回的计数值为2。但现在我的数据库日期以时间戳格式保存。现在我如何编写查询代码我的数据库有一个字段。字段名为date。该日期字段以时间戳(int)保存格式我的控制台上显示以下消息参数索引超出范围(1>参数数,即0)。0ya上面的代码已运行,返回的计数值为2。但现在我的数据库日期以时间戳格式保存。现在我如何编写查询代码?你是什么意思?你的意思是你的列数据类型是timestamp而不是date吗?是这样吗?请尝试语句.setTimestamp(…)
而不是setDate
。有关如何使用setTimestamp
googleit;)的更多信息我的数据库有一个字段。字段名是date。该日期字段保存为timestamp(int)格式,这是因为您在代码中给出的时间戳是当前系统时间。如果你得到零,那么你在这段时间没有数据date\u time
没有记录System.currentTimeMillis()
。你能给我们看一下你表格中的数据吗?尽管您的jdbc代码错误,但我认为您应该使用日历API来实例化sql日期,而不是调用两个构造函数。在这里,我不会告诉您代码,您应该了解您自己以下消息显示在我的控制台参数索引超出范围(1>参数数量,即0)。0ya上述代码已运行,返回的计数值为2。但现在我的数据库日期以时间戳格式保存。现在我如何编写代码query@krishnaveni:我不知道“数据库日期以时间戳格式保存”的含义。我的数据库有一个字段。字段名为日期。该日期字段以时间戳(int)保存格式。@krishnaveni:所以您有一个名为date
的列。你的问题是什么?
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;
}
}