diff --git a/ticketing-master/src/com/cn/dao/impl/TrainDaoImpl.java b/ticketing-master/src/com/cn/dao/impl/TrainDaoImpl.java index 653cdd8..af378e1 100644 --- a/ticketing-master/src/com/cn/dao/impl/TrainDaoImpl.java +++ b/ticketing-master/src/com/cn/dao/impl/TrainDaoImpl.java @@ -1,239 +1,217 @@ -package com.cn.dao.impl; +package com.cn.dao.impl; // 定义包名 -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; +import java.sql.*; // 导入SQL相关的类 +import java.util.*; // 导入集合相关的类 -import com.cn.dao.TrainDao; -import com.cn.domain.Train; -import com.cn.util.JDBCUtil; +import com.cn.dao.TrainDao; // 导入TrainDao接口 +import com.cn.domain.Train; // 导入Train实体类 +import com.cn.util.JDBCUtil; // 导入JDBC工具类 /** - * - * @ClassName: TrainDaoImpl - * @Description: TrainDao的实现类 - * @author: ljy - * @date: 2019年9月14日 下午10:46:23 + * TrainDao的实现类,提供列车数据访问操作。 */ public class TrainDaoImpl implements TrainDao { + private Connection conn = null; // 数据库连接对象 + private PreparedStatement pstmt = null; // 预编译语句对象 + private ResultSet rs = null; // 结果集对象 + + @Override + public int add(Train train) throws SQLException { // 添加列车信息的方法 + String sql = "insert into train (trainnumber,startstation,endstation,starttime,endtime,price,seatnumber,addtime) values (?,?,?,?,?,?,?,?)"; + conn = JDBCUtil.getConnection(); // 从JDBC工具类获取数据库连接 + pstmt = conn.prepareStatement(sql); // 准备SQL插入语句 + pstmt.setObject(1, train.getTrainNumber()); // 设置列车编号参数 + pstmt.setObject(2, train.getStartStation()); // 设置起始站参数 + pstmt.setObject(3, train.getEndStation()); // 设置终点站参数 + pstmt.setObject(4, train.getStartTime()); // 设置起始时间参数 + pstmt.setObject(5, train.getEndTime()); // 设置结束时间参数 + pstmt.setObject(6, train.getPrice()); // 设置价格参数 + pstmt.setObject(7, train.getSeatNumber()); // 设置座位数参数 + pstmt.setObject(8, train.getAddTime()); // 设置添加时间参数 + int recordNumber = pstmt.executeUpdate(); // 执行插入操作,并返回影响的行数 + closeResources(); // 关闭数据库资源 + return recordNumber; + } + + @Override + public int delete(Integer trainId) throws SQLException { // 根据列车ID删除列车信息的方法 + String sql = "delete from train where trainid=?"; + conn = JDBCUtil.getConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setObject(1, trainId); // 设置列车ID参数 + int recordNumber = pstmt.executeUpdate(); // 执行删除操作,并返回影响的行数 + closeResources(); + return recordNumber; + } + + @Override + public int update(Train train) throws SQLException { // 更新列车信息的方法 + String sql = "update train set trainnumber=?,startstation=?,endstation=?,starttime=?,endtime=?,price=?,seatnumber=? where trainid=?"; + conn = JDBCUtil.getConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setObject(1, train.getTrainNumber()); // 设置列车编号参数 + pstmt.setObject(2, train.getStartStation()); // 设置起始站参数 + pstmt.setObject(3, train.getEndStation()); // 设置终点站参数 + pstmt.setObject(4, train.getStartTime()); // 设置起始时间参数 + pstmt.setObject(5, train.getEndTime()); // 设置结束时间参数 + pstmt.setObject(6, train.getPrice()); // 设置价格参数 + pstmt.setObject(7, train.getSeatNumber()); // 设置座位数参数 + pstmt.setObject(8, train.getTrainId()); // 设置列车ID参数,用于更新条件 + int recordNumber = pstmt.executeUpdate(); // 执行更新操作,并返回影响的行数 + closeResources(); + return recordNumber; + } + + @Override + public List getAll() throws SQLException { // 获取所有列车信息的方法 + String sql = "select * from train"; + conn = JDBCUtil.getConnection(); + pstmt = conn.prepareStatement(sql); + rs = pstmt.executeQuery(); // 执行查询操作 + List list = new ArrayList<>(); // 创建列车信息列表 + while (rs.next()) { // 遍历结果集 + int trainId = rs.getInt("trainId"); // 获取列车ID + String trainNumber = rs.getString("trainNumber"); // 获取列车编号 + String startStation = rs.getString("startStation"); // 获取起始站 + String endStation = rs.getString("endStation"); // 获取终点站 + String startTime = rs.getString("startTime"); // 获取起始时间 + String endTime = rs.getString("endTime"); // 获取结束时间 + int price = rs.getInt("price"); // 获取价格 + int seatNumber = rs.getInt("seatNumber"); // 获取座位数 + Timestamp addTime = rs.getTimestamp("addTime"); // 获取添加时间 + Train train = new Train(trainId, trainNumber, startStation, endStation, startTime, endTime, price, seatNumber, addTime); // 创建列车对象 + list.add(train); // 添加列车对象到列表 + } + closeResources(); // 关闭数据库资源 + return list; // 返回列车信息列表 + } + + @Override + public Train getById(Integer trainId) throws SQLException { // 根据列车ID获取列车信息的方法 + String sql = "select * from train where trainid=?"; + conn = JDBCUtil.getConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setObject(1, trainId); // 设置列车ID参数 + rs = pstmt.executeQuery(); // 执行查询操作 + Train train = null; // 初始化列车对象 + while (rs.next()) { // 遍历结果集 + String trainNumber = rs.getString("trainNumber"); // 获取列车编号 + String startStation = rs.getString("startStation"); // 获取起始站 + String endStation = rs.getString("endStation"); // 获取终点站 + String startTime = rs.getString("startTime"); // 获取起始时间 + String endTime = rs.getString("endTime"); // 获取结束时间 + int price = rs.getInt("price"); // 获取价格 + int seatNumber = rs.getInt("seatNumber"); // 获取座位数 + Timestamp addTime = rs.getTimestamp("addTime"); // 获取添加时间 + train = new Train(trainId, trainNumber, startStation, endStation, startTime, endTime, price, seatNumber, addTime); // 创建列车对象 + } + closeResources(); // 关闭数据库资源 + return train; // 返回列车对象 + } + + @Override + public List getByTrainNumber(String trainNumber) throws SQLException { // 根据列车编号获取列车信息列表的方法 + String sql = "select * from train where trainnumber=?"; + conn = JDBCUtil.getConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setObject(1, trainNumber); // 设置列车编号参数 + rs = pstmt.executeQuery(); // 执行查询操作 + List list = new ArrayList<>(); // 创建列车信息列表 + while (rs.next()) { // 遍历结果集 + int trainId = rs.getInt("trainId"); // 获取列车ID + String startStation = rs.getString("startStation"); // 获取起始站 + String endStation = rs.getString("endStation"); // 获取终点站 + String startTime = rs.getString("startTime"); // 获取起始时间 + String endTime = rs.getString("endTime"); // 获取结束时间 + int price = rs.getInt("price"); // 获取价格 + int seatNumber = rs.getInt("seatNumber"); // 获取座位数 + Timestamp addTime = rs.getTimestamp("addTime"); // 获取添加时间 + Train train = new Train(trainId, trainNumber, startStation, endStation, startTime, endTime, price, seatNumber, addTime); // 创建列车对象 + list.add(train); // 添加列车对象到列表 + } + closeResources(); // 关闭数据库资源 + return list; // 返回列车信息列表 + } + + @Override + public List getByStartEndStation(String startStation, String endStation, String startTime) throws SQLException { // 根据起始站、终点站和起始时间获取列车信息列表的方法 + String sql = "select * from train where startStation=? and endStation=? and startTime like \"%\"?\"%\""; + conn = JDBCUtil.getConnection(); + pstmt = conn.prepareStatement(sql); + pstmt.setObject(1, startStation); // 设置起始站参数 + pstmt.setObject(2, endStation); // 设置终点站参数 + pstmt.setObject(3, startTime); // 设置起始时间参数 + rs = pstmt.executeQuery(); // 执行查询操作 + List list = new ArrayList<>(); // 创建列车信息列表 + while (rs.next()) { // 遍历结果集 + int trainId = rs.getInt("trainId"); // 获取列车ID + String trainNumber = rs.getString("trainNumber"); // 获取列车编号 + String endTime = rs.getString("endTime"); // 获取结束时间 + int price = rs.getInt("price"); // 获取价格 + int seatNumber = rs.getInt("seatNumber"); // 获取座位数 + Timestamp addTime = rs.getTimestamp("addTime"); // 获取添加时间 + Train train = new Train(trainId, trainNumber, startStation, endStation, startTime, endTime, price, seatNumber, addTime); // 创建列车对象 + list.add(train); // 添加列车对象到列表 + } + closeResources(); // 关闭数据库资源 + return list; // 返回列车信息列表 + } +@Override +public List getAllStartStation() throws SQLException { // 获取所有不同的起始站的方法 + String sql = "select distinct startstation from train"; // SQL查询,选择不同的起始站 + conn = JDBCUtil.getConnection(); // 从JDBC工具类获取数据库连接 + pstmt = conn.prepareStatement(sql); // 准备SQL查询语句 + rs = pstmt.executeQuery(); // 执行查询操作 + List list = new ArrayList<>(); // 创建列车信息列表 + while (rs.next()) { // 遍历结果集 + String startStation = rs.getString("startStation"); // 获取起始站 + Train train = new Train(); // 创建列车对象 + train.setStartStation(startStation); // 设置列车对象的起始站 + list.add(train); // 将列车对象添加到列表 + } + closeResources(); // 关闭数据库资源 + return list; // 返回列车信息列表 +} - private Connection conn = null; - private PreparedStatement pstmt = null; - private ResultSet rs = null; - - @Override - public int add(Train train) throws SQLException { - String sql = "insert into train (trainnumber,startstation,endstation,starttime,endtime,price,seatnumber,addtime) values (?,?,?,?,?,?,?,?)"; - - conn = JDBCUtil.getConnection(); - pstmt = conn.prepareStatement(sql); - pstmt.setObject(1, train.getTrainNumber()); - pstmt.setObject(2, train.getStartStation()); - pstmt.setObject(3, train.getEndStation()); - pstmt.setObject(4, train.getStartTime()); - pstmt.setObject(5, train.getEndTime()); - pstmt.setObject(6, train.getPrice()); - pstmt.setObject(7, train.getSeatNumber()); - pstmt.setObject(8, train.getAddTime()); - - int recordNumber = pstmt.executeUpdate(); - pstmt.close(); - conn.close(); - return recordNumber; - } - - @Override - public int delete(Integer trainId) throws SQLException { - String sql = "delete from train where trainid=?"; - conn = JDBCUtil.getConnection(); - pstmt = conn.prepareStatement(sql); - pstmt.setObject(1, trainId); - int recordNumber = pstmt.executeUpdate(); - pstmt.close(); - conn.close(); - return recordNumber; - } - - /* - * @Override public int update(Train train) throws SQLException { conn = - * JDBCUtil.getConnection(); queryRunner = new QueryRunner(); int recordNumber = - * queryRunner.update(conn, - * "update train set trainnumber=?,startstation=?,endstation=?,starttime=?,endtime=?,price=?,seatnumber=?,addtime=? where trainid=?" - * , train.getTrainNumber(),train.getStartStation(),train.getEndStation(),train. - * getStartTime(),train.getEndTime(),train.getPrice(),train.getSeatNumber(), - * train.getAddTime(),train.getTrainId()); conn.close(); return - * recordNumber; } - */ - - @Override - public int update(Train train) throws SQLException { - String sql = "update train set trainnumber=?,startstation=?,endstation=?,starttime=?,endtime=?,price=?,seatnumber=? where trainid=?"; - conn = JDBCUtil.getConnection(); - pstmt = conn.prepareStatement(sql); - pstmt.setObject(1, train.getTrainNumber()); - pstmt.setObject(2, train.getStartStation()); - pstmt.setObject(3, train.getEndStation()); - pstmt.setObject(4, train.getStartTime()); - pstmt.setObject(5, train.getEndTime()); - pstmt.setObject(6, train.getPrice()); - pstmt.setObject(7, train.getSeatNumber()); - pstmt.setObject(8, train.getTrainId()); - - int recordNumber = pstmt.executeUpdate(); - pstmt.close(); - conn.close(); - return recordNumber; - } - - @Override - public List getAll() throws SQLException { - String sql = "select * from train"; - conn = JDBCUtil.getConnection(); - pstmt = conn.prepareStatement(sql); - rs = pstmt.executeQuery(); - List list = new ArrayList(); - while (rs.next()) { - int trainId = rs.getInt("trainId"); - String trainNumber = rs.getString("trainNumber"); - String startStation = rs.getString("startStation"); - String endStation = rs.getString("endStation"); - String startTime = rs.getString("startTime"); - String endTime = rs.getString("endTime"); - int price = rs.getInt("price"); - int seatNumber = rs.getInt("seatNumber"); - Timestamp addTime = rs.getTimestamp("addTime"); - Train train = new Train(trainId, trainNumber, startStation, endStation, startTime, endTime, price, - seatNumber, addTime); - list.add(train); - } - rs.close(); - pstmt.close(); - conn.close(); - return list; - } - - @Override - public Train getById(Integer trainId) throws SQLException { - String sql = "select * from train where trainid=?"; - conn = JDBCUtil.getConnection(); - pstmt = conn.prepareStatement(sql); - pstmt.setObject(1, trainId); - rs = pstmt.executeQuery(); - Train train = null; - while (rs.next()) { - String trainNumber = rs.getString("trainNumber"); - String startStation = rs.getString("startStation"); - String endStation = rs.getString("endStation"); - String startTime = rs.getString("startTime"); - String endTime = rs.getString("endTime"); - int price = rs.getInt("price"); - int seatNumber = rs.getInt("seatNumber"); - Timestamp addTime = rs.getTimestamp("addTime"); - train = new Train(trainId, trainNumber, startStation, endStation, startTime, endTime, price, seatNumber, - addTime); - } - rs.close(); - pstmt.close(); - conn.close(); - return train; - } - - @Override - public List getByTrainNumber(String trainNumber) throws SQLException { - String sql = "select * from train where trainnumber=?"; - conn = JDBCUtil.getConnection(); - pstmt = conn.prepareStatement(sql); - pstmt.setObject(1, trainNumber); - rs = pstmt.executeQuery(); - List list = new ArrayList(); - while (rs.next()) { - int trainId = rs.getInt("trainId"); - String startStation = rs.getString("startStation"); - String endStation = rs.getString("endStation"); - String startTime = rs.getString("startTime"); - String endTime = rs.getString("endTime"); - int price = rs.getInt("price"); - int seatNumber = rs.getInt("seatNumber"); - Timestamp addTime = rs.getTimestamp("addTime"); - Train train = new Train(trainId, trainNumber, startStation, endStation, startTime, endTime, price, - seatNumber, addTime); - list.add(train); - } - rs.close(); - pstmt.close(); - conn.close(); - return list; - } - - @Override - public List getByStartEndStation(String startStation, String endStation, String startTime) - throws SQLException { - String sql = "select * from train where startStation=? and endStation=? and startTime like \"%\"?\"%\""; - conn = JDBCUtil.getConnection(); - pstmt = conn.prepareStatement(sql); - pstmt.setObject(1, startStation); - pstmt.setObject(2, endStation); - pstmt.setObject(3, startTime); - rs = pstmt.executeQuery(); - List list = new ArrayList(); - while (rs.next()) { - int trainId = rs.getInt("trainId"); - String trainNumber = rs.getString("trainNumber"); - String endTime = rs.getString("endTime"); - int price = rs.getInt("price"); - int seatNumber = rs.getInt("seatNumber"); - Timestamp addTime = rs.getTimestamp("addTime"); - Train train = new Train(trainId, trainNumber, startStation, endStation, startTime, endTime, price, - seatNumber, addTime); - list.add(train); - } - rs.close(); - pstmt.close(); - conn.close(); - return list; - } - - @Override - public List getAllStartStation() throws SQLException { - String sql = "select distinct startstation from train"; - conn = JDBCUtil.getConnection(); - pstmt = conn.prepareStatement(sql); - rs = pstmt.executeQuery(); - List list = new ArrayList(); - - while (rs.next()) { - String startStation = rs.getString("startStation"); - Train train = new Train(); - train.setStartStation(startStation); - list.add(train); +@Override + public List getAllEndStation() throws SQLException { // 获取所有不同的终点站的方法 + String sql = "select distinct endstation from train"; // SQL查询,选择不同的终点站 + conn = JDBCUtil.getConnection(); // 从JDBC工具类获取数据库连接 + pstmt = conn.prepareStatement(sql); // 准备SQL查询语句 + rs = pstmt.executeQuery(); // 执行查询操作 + List list = new ArrayList<>(); // 创建列车信息列表 + while (rs.next()) { // 遍历结果集 + String endStation = rs.getString("endStation"); // 获取终点站 + Train train = new Train(); // 创建列车对象 + train.setEndStation(endStation); // 设置列车对象的终点站 + list.add(train); // 将列车对象添加到列表 + } + closeResources(); // 关闭数据库资源 + return list; // 返回列车信息列表 } - rs.close(); - pstmt.close(); - conn.close(); - return list; - } - @Override - public List getAllEndStation() throws SQLException { - String sql = "select distinct endstation from train"; - conn = JDBCUtil.getConnection(); - pstmt = conn.prepareStatement(sql); - rs = pstmt.executeQuery(); - List list = new ArrayList(); - while (rs.next()) { - String endStation = rs.getString("endStation"); - Train train = new Train(); - train.setEndStation(endStation); - list.add(train); + // 关闭数据库资源的方法 + private void closeResources() { + if (rs != null) { + try { + rs.close(); // 关闭结果集 + } catch (SQLException e) { + e.printStackTrace(); + } + } + if (pstmt != null) { + try { + pstmt.close(); // 关闭预编译语句 + } catch (SQLException e) { + e.printStackTrace(); + } + } + if (conn != null) { + try { + conn.close(); // 关闭数据库连接 + } catch (SQLException e) { + e.printStackTrace(); + } + } } - rs.close(); - pstmt.close(); - conn.close(); - return list; - } - -} +} \ No newline at end of file