我不明白为什么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;
}
我引用了一个插入值来证明它可以正常工作,并且已正确连接到数据库。
插入值起作用。但是,每当我尝试对数据库执行搜索查询时,它都不会起作用,即使我将查询更改为“ SELECT * FROM INVENTORY”,r.next()也永远不会为true,并且while循环中的print语句也不会执行。 PRODUCTID = 1000“
答案 0 :(得分:0)
您的问题正在发生,因为您没有明确地从sqlplus提交插入。退出sqlplus时,会发生隐式提交,这就是问题消失的原因。