【发布时间】:2018-05-07 21:48:06
【问题描述】:
我正在尝试使用 Java 浏览我的 Access 数据库,以检查日期范围是否介于另一个日期范围之间以避免重复预订。我遇到了一个 SQL 错误,上面写着“ResultSet is Closed”。我相信这是因为我使用了两个 resultSet 来通过一个 while 循环检查两个不同的日期。代码如下:
String date1Query = "SELECT checkIn FROM Reservation WHERE roomLocation LIKE '" + room + "'";
String date2Query = "SELECT checkOut FROM Reservation WHERE roomLocation LIKE '" + room + "'";
ResultSet date1RS = statement.executeQuery(date1Query);
ResultSet date2RS = statement.executeQuery(date2Query);
while (date1RS.next()) {
date1 = date1RS.getDate("checkIn");
date2 = date2RS.getDate("checkOut");
dateCheckBool = dateCheck.dateCheck(date1, date2, checkIn, checkOut);
if (dateCheckBool == true)
break;
}
我还能如何格式化它以实现相同的功能(能够根据数据库中现有的日期检查用户的输入日期)但不会出错?如果这还不够清楚我要做什么,我会根据要求进一步澄清。谢谢!
编辑:这里要求的是 dateCheck 代码:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class dateCheck {
public boolean dateCheck(Date date1, Date date2, String date3, String
date4){
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date dateCheck1;
Date dateCheck2;
boolean dateRange1 = false;
boolean dateRange2 = false;
try {
dateCheck1 = dateFormat.parse(date3);
dateCheck2 = dateFormat.parse(date4);
if(dateCheck1.before(date1) || dateCheck1.after(date2))
dateRange1 = false;
else
dateRange1 = true;
if(dateCheck2.after(date2))
dateRange2 = false;
else
dateRange2 = true;
} catch (ParseException e) {
e.printStackTrace();
}
if(dateRange1 == false && dateRange2 == false)
return false;
else
return true;
}
}
【问题讨论】:
-
可以分享
dateCheck的代码吗?它应该做什么? -
@Mureinik 我添加了它,它将字符串解析为日期,然后将它们与数据库中已包含的日期进行比较
标签: java sql ms-access resultset