Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当一列为空时,无法在数据库中找到项_Java_Sql_Database_Join - Fatal编程技术网

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

Java 当一列为空时,无法在数据库中找到项,java,sql,database,join,Java,Sql,Database,Join,我有一个程序,它要求我输入产品的ID,然后搜索数据库以显示特定产品的详细信息 对于数据库中除ProductID2和ProductID4之外的每个项目,代码都可以正常工作,因为它们没有存储在其中一列(PRODUCT_类型)中的数据 我的代码中有一个if语句,它说: 但是我不明白为什么当产品类型为null时它找不到产品,但是当描述为null时它仍然可以找到产品 try{ String searchCode = "SELECT PRODUCTS.PRODUCT

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

对于数据库中除ProductID2和ProductID4之外的每个项目,代码都可以正常工作,因为它们没有存储在其中一列(PRODUCT_类型)中的数据

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

但是我不明白为什么当产品类型为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();
}
任何帮助都将不胜感激。谢谢。

你有打字错误吗

result.getString(“DESCRIPTION”)==null

应该是

result.getString(“DESCRIPTION”)==null


请注意当前版本中
“Description”
中的额外空格。

我已经更改了,它仍然在说“找不到该产品。我认为这是SQL查询中的问题,但我很难理解,因此我不知道是什么原因导致程序能够找到具有PRODUCT_TYPE值但无法找到null值的产品。您的SQL正在对products.PRODUCT_TYPE进行连接,该类型为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();
}