2017-04-07 18 views
0

私は製品のIDを入力する必要があるプログラムを持っており、特定の製品に関する詳細を表示するためにデータベースを検索します。1つの列がNULLのときにデータベース内の項目を見つけることができません

コードは、いずれかの列(PRODUCT_TYPE)にデータが格納されていないため、productID 2およびproductID 4以外のデータベース内のすべての項目に対して正常に機能します。

私は言う私のコードで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の場合、製品を見つけることができないのですが、説明がある場合は、まだそれを見つけることができますなぜ私が把握することはできませんヌル。

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(); 
} 

大変お手伝いをいたします。ありがとう。

+0

SQLはPRODUCTS.PRODUCT_TYPEでJOINを実行していますが、これはnullです。つまり、nullと一致するものがないため、結合は何も結合しません。 – ryanp102694

+0

これを解決する方法はありますか?他のテーブルにリンクできるものは他にありません。これは、他の製品タイプテーブルに関するテーブルの唯一の列です。 – Adam

答えて

0

あなたはタイプミスがありますか?

result.getString("DESCRIPTION ") == null

result.getString("DESCRIPTION") == null

にする必要があり、あなたの現在のバージョンで"Description "に余分なスペースに注意してください。

+0

私はこれを変更しましたが、それでもまだ「その製品が見つかりませんでした。SQLクエリには何かだと思いますが、私はそれに苦労しています。 PRODUCT_TYPEの値を持ち、ヌル値で見つからない製品を見つけます。 – Adam

関連する問題