java.sql - ResultSet r.next () не работает - PullRequest
0 голосов
/ 06 декабря 2018

Я не понимаю, почему ResultSet не работает, как будто нет результатов

public static int checkProductID(Connection conn) {

    boolean productIDisvalid = false;
    int id = 0;
    while (!productIDisvalid) {
        System.out.println("Enter a product ID: ");
        try {
            id = Integer.parseInt(readLine());
            if (id < 10000000 && id > 0) {
                System.out.println(id);
                // PreparedStatement pstmt = conn.prepareStatement ("INSERT INTO INVENTORY VALUES (?,?,?,?) ");
                // pstmt.setInt(1,4000); pstmt.setString(2,"hello"); pstmt.setInt(3,4000); pstmt.setInt(4,400);
                PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM INVENTORY WHERE PRODUCTID = ?");
                pstmt.setInt(1, id);
                ResultSet r = pstmt.executeQuery();
                while (r.next()) {
                    System.out.println(r.getInt("PRODUCTID"));
                    if (r.getInt("PRODUCTID") == id) return id;
                }
            }

        } catch (NumberFormatException | SQLException | NullPointerException e) {
            e.printStackTrace();
            continue;
        }
    }

    return id;
}

Я привел в кавычки значения вставки, чтобы доказать, что он работает и правильно подключен к базе данных.

enter image description here

Вставка значений работает.Но всякий раз, когда я пытаюсь выполнить поисковый запрос к базе данных, он не работает, r.next () никогда не выполняется, и оператор print внутри этого цикла while никогда не выполняется, даже если я изменю запрос на «SELECT * FROM INVENTORY».ГДЕ ПРОДУКТ = 1000 "

1 Ответ

0 голосов
/ 11 декабря 2018

Ваша проблема возникла из-за того, что вы явно не зафиксировали вставку из sqlplus.Когда вы выходите из sqlplus, происходит неявная фиксация, поэтому проблема исчезла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...