当前位置: 首页 > 知识库问答 >
问题:

当一列为null时,无法在数据库中找到项

漆雕升
2023-03-14

我有一个程序,要求我输入产品的ID,然后搜索数据库以显示特定产品的详细信息。

除了productID 2和productID 4之外,该代码适用于数据库中的每个项目,因为它们没有存储在其中一个列(PRODUCT_TYPE)中的数据。

我的代码中有一个if语句,它说:

else if (result.getString("PRODUCT_TYPE") == null && result.getString("DESCRIPTION ") == null)
{
System.out.println("Item ID: " + result.getString("STOCKITEM") + ". \nProduct name: " + result.getString("PRODUCT") + ". \nCost: £" + result.getString("COST") + ". \nStock level: " + result.getString("STOCKLEVEL") + ". \nProduct type: null.");
}

但是我不明白为什么如果产品类型为null,它无法找到产品,但是如果描述为null,它仍然可以找到产品。

    try{        
        String searchCode = "SELECT PRODUCTS.PRODUCT, PRODUCTS.COST, PRODUCTS.DESCRIPTION, PRODUCT_STOCK.STOCKITEM , PRODUCT_STOCK.STOCKLEVEL FROM PRODUCT_TYPE INNER JOIN (PRODUCTS FULL OUTER JOIN PRODUCT_STOCK ON PRODUCTS.PRODUCTID = PRODUCT_STOCK.STOCKITEM) ON PRODUCT_TYPE.PRODTYPEID = PRODUCTS.PRODUCT_TYPE WHERE PRODUCTID = " + inputValue + ";";
        // sql statement searches the database for the required data

        Statement statement = dbConnection.createStatement();
        ResultSet result = statement.executeQuery(searchCode);
        boolean found = false;
        found = result.next();

        if (!found) { //if no data is found then display the error message and restart the product search method
            System.out.println("That product couldn't be found, please try again.");
            searchProduct();
        }
        else if (result.getString("PRODUCT_TYPE") == null && result.getString("DESCRIPTION ") == null)
        {
            System.out.println("Item ID: " + result.getString("STOCKITEM") + ". \nProduct name: " + result.getString("PRODUCT") + ". \nCost: £" + result.getString("COST") + ". \nStock level: " + result.getString("STOCKLEVEL") + ". \nProduct type: null.");
        }
        else if (result.getString("PRODUCT_TYPE") == null && result.getString("DESCRIPTION") != null){
            System.out.println("Item ID: " + result.getString("STOCKITEM") + ". \nProduct name: " + result.getString("PRODUCT") + ". \nCost: £" + result.getString("COST") + ". \nStock level: " + result.getString("STOCKLEVEL") + ". \nDescription: " + result.getString("DESCRIPTION") + ". \nProduct type: null.");
            }
        else if (result.getString("PRODUCT_TYPE") != null && result.getString("DESCRIPTION") == null){
                System.out.println("Item ID: " + result.getString("STOCKITEM") + ". \nProduct name: " + result.getString("PRODUCT") + ". \nCost: £" + result.getString("COST") + ". \nStock level: " + result.getString("STOCKLEVEL") +  ". \nDescription: null. \nProduct type: " + result.getString("PRODTYPE_DESC") + ".");
            }
        else if (result.getString("PRODUCT_TYPE") != null && result.getString("DESCRIPTION") != null){
            System.out.println("Item ID: " + result.getString("STOCKITEM") + ". \nProduct name: " + result.getString("PRODUCT") + ". \nCost: £" + result.getString("COST") + ". \nStock level: " + result.getString("STOCKLEVEL") + ". \nDescription: " + result.getString("DESCRIPTION") + ". \nProduct type: " + result.getString("PRODTYPE_DESC") + ".");
            }
        }
    catch (Exception e){ // if the product can't be found then display the error message and restart the product search method
        System.out.println("Could not find product.");
        System.out.println(e.toString());
        searchProduct();
    }

    //goes back to menu once the method has finished
    askUser();
}

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

共有1个答案

柳杰
2023-03-14

你有打字错误吗?

result.get字符串("DESCRIPTION ") == null

应该是

<代码>结果。getString(“DESCRIPTION”)=空

请注意当前版本中“说明”中的额外空间。

 类似资料:
  • 其他人有这个奇怪的问题吗?错误消息: 致命错误:未捕获异常“exception”,消息为“DateTime::\uuu construct():无法分析位置17(A)处的时间字符串(2016年1月18日美国/纽约凌晨00:00):在数据库中找不到时区 异常:DateTime::_构造():未能分析位置17(A)处的时间字符串(2016年1月18日美国/纽约凌晨00:00):在数据库中找不到时区 原

  • 这是保存列表的功能,有什么方法可以让我将列表保存在数据库中,并跳过现有的列表,这样它就会与现有的列表重复。 下面是我保存列表的SQL

  • 使用quarkus hibernate时,我发现一个错误(Stacktrace如下所示)。我将属性设置为更新时出错<代码>拖放并创建工作正常。 应用程序属性 堆栈跟踪

  • 我一直在做一个应用程序,它有一个SQL数据库。我正在尝试检索SQL数据库“year_details”的特定列“col3”中的数据,但当按下一个按钮时,我得到了很多错误,谁能告诉我,我做错了什么。

  • 问题内容: 假设我们有一个包含两列的数据库表,entry_time和value。entry_time是时间戳记,而value可以是任何其他数据类型。记录是相对一致的,大约每隔x分钟输入一次。但是,对于许多x的时间来说,可能无法进行输入,从而在数据中产生“间隙”。 在效率方面,如何通过查询找到至少Y时间(新旧)之间的差距的最佳方法是什么? 问题答案: 首先,让我们按小时汇总表中的条目数。 现在,如果