2015-06-19 60 views
0

對於一個應用程序,我正在檢查一個表是否被填充,以便我可以從中檢索它;否則我會從另一張桌子回來。爲此,我使用select並通過wasnull()檢查它是否具有空值。如果是這樣,我執行查詢;否則,我執行一個不同的查詢。我遇到的問題是它爲空時,它不執行查詢,但返回空值! 你能告訴我我做錯了什麼或更好的解決方案嗎?對返回null或非null值的select的resultset的條件-java,

這裏是我的代碼:

String reqEx = "SELECT PYE_DATEDEBUT,PYE_DATEFIN FROM PGEXCEPTPRESENCE WHERE PYE_SALARIE='"+chaine+"' "; 
    ResultSet rs = stmt.executeQuery(reqEx); 
    if (rs.wasNull()) { 
      req = " select jour.PJO_HORDEBPLAGE1,jour.PJO_HORFINPLAGE1,jour.PJO_HORDEBPLAGE2,jour.PJO_HORFINPLAGE2" 
      + " from profilpressalarie propressal join profilpresence propres on propressal.ppz_profilpres = propres.ppq_profilpres " 
      + "join modelecycle modcyc on propres.PPQ_CYCLEAFFECT = modcyc.PMO_MODELECYCLE join JOURNEETYPE jour " + 
      " on modcyc.PMO_JOURNEETYPE= jour.PJO_JOURNEETYPE where modcyc.PMO_ORDREJOUR='"+orderJ+"' " + 
      " and propressal.PPZ_salarie= '"+chaine+"'"; 
    } 
    else{ 
     while(rs.next()){ 
      req = " select jour.PJO_HORDEBPLAGE1,jour.PJO_HORFINPLAGE1,jour.PJO_HORDEBPLAGE2,jour.PJO_HORFINPLAGE2" 
        + " from PGEXCEPTPRESENCE exc join profilpresence propres on exc.PYE_CYCLEAFFECT = propres.ppq_profilpres join modelecycle modcyc " + 
        "on propres.PPQ_CYCLEAFFECT = modcyc.PMO_MODELECYCLE join JOURNEETYPE jour " + 
        "on modcyc.PMO_JOURNEETYPE= jour.PJO_JOURNEETYPE where modcyc.PMO_ORDREJOUR='"+orderJ+"' " + 
        "and exc.PYE_SALARIE= '"+chaine+"' "; 
}} 

回答

0

rs.wasNull()是指用於驗證最後一次讀取列爲空或不是。如果表的第一列是像int這樣的基本數據類型,它將不會返回NULL。所以在這種情況下,您需要驗證查詢是否返回任何行。對於此,請使用以下if條件:

if (!rs.next()) { 
      req = " select jour.PJO_HORDEBPLAGE1,jour.PJO_HORFINPLAGE1,jour.PJO_HORDEBPLAGE2,jour.PJO_HORFINPLAGE2" 
      + " from profilpressalarie propressal join profilpresence propres on propressal.ppz_profilpres = propres.ppq_profilpres " 
      + "join modelecycle modcyc on propres.PPQ_CYCLEAFFECT = modcyc.PMO_MODELECYCLE join JOURNEETYPE jour " + 
      " on modcyc.PMO_JOURNEETYPE= jour.PJO_JOURNEETYPE where modcyc.PMO_ORDREJOUR='"+orderJ+"' " + 
      " and propressal.PPZ_salarie= '"+chaine+"'"; 
    } 
+0

謝謝您的解釋..其實我以前嘗試過了,不知道爲什麼它不work..Now,它的工作原理再次謝謝:) –

+0

請接受我的答案(增加我的聲望),如果它解決了你的問題:) – kalai