我有一个包含“日期”列的表格,并以以下格式输入日期:“2011-09-06” 我想执行查询:
select * from tvprograms where date=?
然后我试试这个:
Date startDate;
java.util.Date date;
Calendar cal = Calendar.getInstance();
cal.set(2011, 9, 1);
startDate = cal.getTime();
TVProgramDAO tvDAO = new TVProgramDAO();
tvDAO.findUnusedTvPrograms(new java.sql.Date(date.getTime()));
findUnusedTvPrograms 看起来:
public List<Integer> findUnusedTvPrograms(Date date) {
List<Integer> results = new ArrayList<Integer>();
if (obtainConnection()) {
PreparedStatement stmt = null;
ResultSet rs = null;
...
stmt = con.prepareStatement(findOldTvProgQuery.toString());
stmt.setDate(1, date);
rs = stmt.executeQuery();
while (rs.next()) {
results.add(rs.getInt(1));
...
return results;
}
但它不起作用。
最佳答案
据我所知,这段代码无法编译:
Date startDate;
java.util.Date date;
Calendar cal = Calendar.getInstance();
cal.set(2011, 9, 1);
startDate = cal.getTime();
TVProgramDAO tvDAO = new TVProgramDAO();
tvDAO.findUnusedTvPrograms(new java.sql.Date(date.getTime()));
您正在尝试使用 date
但您从未初始化该变量。这是一个稍微干净的版本:
Calendar cal = Calendar.getInstance();
cal.set(2011, 9, 1);
Date startDate = cal.getTime();
TVProgramDAO tvDAO = new TVProgramDAO();
tvDAO.findUnusedTvPrograms(new java.sql.Date(startDate.getTime()));
请注意,这将使用系统的默认时区,这可能不是一个好主意。我个人建议使用 Joda Time相反……
关于java - 如何正确使用setDate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403454/