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