Строка SQLite исчезает после выполнения запроса выбора - PullRequest
0 голосов
/ 08 февраля 2020

Я использую базу данных SQLite с сервлетами java для своего приложения для кино.

У меня есть DAO, который общается с БД. После выполнения запроса на выборку к базе данных, случайная строка удаляется.

Вот метод, который дает мне список проекций, основанный на mov ie, но каким-то образом удаляет строку в таблице при каждом вызове. (Он всегда удаляет строку сверху и после этого случайные строки).

public static List<Projection> getAllByMovie(Integer movie_id) {

        List<Projection> projections = new ArrayList<>();

        Connection con = ConnectionManager.getConnection();

        PreparedStatement ps = null;

        ResultSet rs = null;

        try {
            String query = "SELECT * FROM projections WHERE movie = ? AND dateandtime >= '2020-02-11'";

            ps = con.prepareStatement(query);
            ps.setInt(1, movie_id);

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

            rs = ps.executeQuery();
            while (rs.next()) {
                int index = 1;
                int id = rs.getInt(index++);
                int title = rs.getInt(index++);
                int projection_type = rs.getInt(index++);
                int theater_rs = rs.getInt(index++);
                String date_and_time = rs.getString(index++);
                double price = rs.getDouble(index++);
                int admin_creator = rs.getInt(index++);

                Theater theater = TheaterDAO.get(theater_rs);
                Movie movie = MovieDAO.get(title);
                ProjectionType projectionType = ProjectionTypeDAO.get(projection_type);
                Projection projection = new Projection();
                projection.setId(id);
                projection.setMovie(movie.getTitle());
                projection.setProjectionType(projectionType.getName());
                projection.setTheater(theater.getName());
                Date date = sdf.parse(date_and_time);
                projection.setDateOutput(date_and_time);
                projection.setDateAndTime(date);
                projection.setTicketPrice(price);
                projection.setAdminCreator(admin_creator);

                projections.add(projection);

            }

        } catch(Exception ex) {
            ex.printStackTrace();
        } finally {
            try {ps.close();} catch (Exception ex1) {ex1.printStackTrace();}
            try {rs.close();} catch (Exception ex1) {ex1.printStackTrace();}
        }

        return projections;
    }

Я всегда получаю желаемый результат с помощью этого запроса, но он случайным образом удаляет строку.

У меня есть много других методов и запрашивает базу данных, но никто не вызывает такого рода поведение.

РЕДАКТИРОВАТЬ: я пришел к выводу, изначально в таблице 25 проекций (строк), она удаляет строки до 15 осталось! (первые 10 строк удаляются, первая строка затем остальные 9 в случайном порядке)

Что, черт возьми, происходит?

...