java.sql-ResultSet r.next()不起作用

时间:2018-12-06 03:15:58

标签: java sql oracle

我不明白为什么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

插入值起作用。但是,每当我尝试对数据库执行搜索查询时,它都不会起作用,即使我将查询更改为“ SELECT * FROM INVENTORY”,r.next()也永远不会为true,并且while循环中的print语句也不会执行。 PRODUCTID = 1000“

1 个答案:

答案 0 :(得分:0)

您的问题正在发生,因为您没有明确地从sqlplus提交插入。退出sqlplus时,会发生隐式提交,这就是问题消失的原因。