java检测租赁场地时间被选的代码以及其数据库表的结构
时间: 2024-05-13 19:19:34 浏览: 106
租房系统代码及数据库文件
以下是一个简单的Java代码示例,用于检查租赁场地的时间是否被选择。假设我们有一个名为“booking”的数据库表,其中包含以下列:id,venue_id,start_time和end_time。其中venue_id是场地的唯一标识符,start_time和end_time分别是预订的开始和结束时间。
```java
import java.sql.*;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BookingChecker {
public static void main(String[] args) {
// 假设要检查的场地ID为1,预订开始时间为2022-01-01 10:00:00,结束时间为2022-01-01 12:00:00
int venueId = 1;
String startTimeString = "2022-01-01 10:00:00";
String endTimeString = "2022-01-01 12:00:00";
// 将时间字符串转换为Date对象
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startTime = null;
Date endTime = null;
try {
startTime = dateFormat.parse(startTimeString);
endTime = dateFormat.parse(endTimeString);
} catch (ParseException e) {
e.printStackTrace();
}
// 连接数据库
String url = "jdbc:mysql://localhost/mydatabase";
String user = "root";
String password = "mypassword";
try {
Connection connection = DriverManager.getConnection(url, user, password);
// 查询是否存在冲突的预订
String query = "SELECT COUNT(*) FROM booking WHERE venue_id = ? AND start_time < ? AND end_time > ?";
PreparedStatement statement = connection.prepareStatement(query);
statement.setInt(1, venueId);
statement.setTimestamp(2, new java.sql.Timestamp(endTime.getTime()));
statement.setTimestamp(3, new java.sql.Timestamp(startTime.getTime()));
ResultSet resultSet = statement.executeQuery();
resultSet.next();
int count = resultSet.getInt(1);
// 如果存在冲突,则输出错误信息
if (count > 0) {
System.out.println("The venue is already booked during this time.");
} else {
System.out.println("The venue is available during this time.");
}
// 关闭连接
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
上面的代码使用了JDBC来连接MySQL数据库,并执行了一个查询来检查场地是否已经被预订。如果存在冲突,则输出错误信息,否则输出场地可用。
下面是booking表的结构:
```
CREATE TABLE booking (
id INT NOT NULL AUTO_INCREMENT,
venue_id INT NOT NULL,
start_time DATETIME NOT NULL,
end_time DATETIME NOT NULL,
PRIMARY KEY (id)
);
```
booking表包含一个自增的id列,一个venue_id列来标识场地,以及start_time和end_time列来标识预订的开始和结束时间。由于我们在Java代码中使用了JDBC,因此可以使用任何支持JDBC的关系型数据库来存储booking表。
阅读全文