【问题标题】:While Loop inside an If-else statement (Java)If-else 语句中的 While 循环 (Java)
【发布时间】:2016-10-22 09:46:23
【问题描述】:

我正在编写一个 Java 程序,只要在另一个数据库中找到具有相同产品模型的记录,它就会使用新的详细信息更新本地数据库中的现有数据。如果没有找到记录,它会插入一条新记录。

我正在使用 if-else 语句来检查记录是否存在。当前代码仅适用于单个记录。只要本地数据库和其他数据库中的产品模型存在,我希望它继续更新本地数据库。

这是我目前正在使用的代码:

public static void checkExist() {
    try {
        Statement stmt = conn.createStatement();
        int prod_qnty, prod_weight;
        float prod_price;

        String prod_model = "97801433"; //testing purposes

        ResultSet rs = stmt.executeQuery("SELECT * from products where products_model = " + prod_model );

        if (rs.next()){                
            //while (rs.next()) {    
                prod_qnty = rs.getInt("products_quantity");
                prod_price = rs.getFloat("products_price");
                prod_weight = rs.getInt("products_weight");

                System.out.println(prod_qnty + "\t" + prod_price + "\t" + prod_weight);

                updDB(prod_model, prod_qnty, prod_price, prod_weight);
            //}
        }
        else{
            insertDB(prod_model, prod_qnty, prod_price, prod_weight);
        }
        stmt.close();
    } catch (SQLException ex) {
        //Logger.getLogger(Check.class.getName()).log(Level.SEVERE, null, ex);
    }
}

我已经在存在记录的 if 语句中添加了一个 while 循环,但是,在我添加了 while 循环之后。现在它甚至不能打印出任何记录。似乎一旦进入 if (rs.next()) 条件,就不会进入 while 循环。

有人会告诉我我做错了什么吗?是否可以在 if-else 语句中使用 while 循环?与通常相反,在 while 循环中使用 if-else 语句。

任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 你为什么要注释掉记录器的输出?该输出非常重要。

标签: java mysql if-statement while-loop


【解决方案1】:

您不必添加单独的 if 语句 while (rs.next()) { //CODE }

如果你调用next() 2次,光标将向前移动2条记录,如果你只有一条记录,它不会进入while循环。

CODE 仅在有结果时才会执行。

【讨论】:

    猜你喜欢
    • 2015-11-08
    • 2012-06-18
    • 2015-04-07
    • 2014-07-01
    • 1970-01-01
    • 2017-02-17
    • 2015-12-28
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多