java - If-else 语句中的 While 循环 (Java)

标签 java mysql if-statement while-loop

我正在编写一个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);
    }
}

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

有人会让我知道我做错了什么吗?是否可以在 if-else 语句中使用 while 循环?通常,它以相反的方式使用,即 while 循环中的 if-else 语句。

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

最佳答案

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

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

仅当有剩余结果时,CODE 才会执行。

关于java - If-else 语句中的 While 循环 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37934348/

相关文章:

java - 该 fragment 中的 `GC_BEFORE_OOM` 是什么?

mysql - 如何从故障时间中提取中断时间

c++ - 有没有更好的方法来重写这个丑陋的 switch 和 if 语句组合?

c++ - 为什么 if 语句不起作用

java - 如果用户输入不满足条件,则返回消息

java - 使用 Spring 构建字符串?

java - 在 java 中打印 1 到 10 没有任何循环

java - 删除 gradle 中的传递类路径依赖

python - Python 中的 Unicode 问题

php - 创建一个报告,显示开始日期和结束日期之间每一天的具体统计数据