java - 对空结果集的非法操作

标签 java exception operation

我正在尝试在杂货店建立一个收银台,我的代码实际上执行了我想要它做的事情,但有一点。

在我要求用户输入他们想要的商品数量后,产品信息被收集并且工作正常,但是当它应该要求用户输入下一个产品的产品 ID 时,该行会重复,并且我在我的捕获中出现以下异常:“对空结果集进行非法操作”。同样,除了该行的重复之外,所有计算都很好。关于可能出现的问题有什么想法吗?

重复的输出是这样的:

Enter product (or Exit):

ERROR1: Illegal operation on empty result set.

Enter product (or Exit):

这是代码。

try {
  Class.forName("com.mysql.jdbc.Driver");
  String connection = "jdbc:mysql://myDB?";
  connection = connection + "user=xxx&password=xxxxxx";
  Connection conn = DriverManager.getConnection(connection);
  // MATA IN PRODUKTNUMMER
  System.out.println("\nEnter product (or Exit):");
  GroceryStore.input = GroceryStore.scan.nextLine();

  PreparedStatement stmt = conn.prepareStatement(
          "SELECT * "+
          "FROM Products "+
          "WHERE productNo = ?");
          stmt.setString(1, GroceryStore.input); 

          ResultSet rs = stmt.executeQuery();
          rs.next();

    pName = rs.getString("productName");
    System.out.println("Product: " + pName);

    // MATA IN ANTAL
    System.out.println("\nEnter amount:");
    GroceryStore.amount = GroceryStore.scan.nextInt();


    pPrice = rs.getDouble("productPrice");
    priceRounded = new BigDecimal(pPrice).setScale(2, BigDecimal.ROUND_FLOOR);
    amountRounded = new BigDecimal(GroceryStore.amount).setScale(0);
    priceRounded = priceRounded.multiply(amountRounded);
    GroceryStore.sum = GroceryStore.sum.add(priceRounded);

    inOut.output();  
    inOut.input();
    conn.close();
    }
    catch (Exception e) {
         System.out.println("ERROR1: " + e.getMessage());
    }

最佳答案

您没有检查结果集中是否有任何数据或行。

ResultSet rs = stmt.executeQuery();
rs.next();
...
...

您应该检查结果是否为空或有任何行:

ResultSet rs = stmt.executeQuery();
if(rs.next()){
.....
your code
.....
}

关于java - 对空结果集的非法操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50938572/

相关文章:

objective-c - ***由于未捕获的异常 'NSInvalidArgumentException'而终止应用程序

exception - quartz 的 slf4j 异常

Java - 如何检查除法是整数还是 float ?

python - Unicode - 字符串 - 列表操作

java - 对空结果集的非法操作

Java 替换变量

java - 尝试 - 捕获枚举

java - 使用 Metro 连接到 WCF 服务的问题 - HTTP 有效,HTTPS 无效

java - 是否有一个 OSGI 容器用于锎,就像 Kura 用于 MQTT 一样?或者kura可以配置为锎吗?

java - Java中如何处理异常而不必回到try block 的开头?