2011-08-17 493 views
2

我想在ORACLE sql代碼中創建條件語句 我在java中有一個需要2個參數的函數。 的GetChildren(child1,的child2) ..this函數的參數是用來創建一個查詢語句SQL條件語句

public ResultSet getchildren(String Child1, String child2) throws SQLException 
{ 

stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 
ResultSet.CONCUR_READ_ONLY); 


    query ="select * from table1 

      if child1 is not null and child2 is null 
      { where child1 = 1 } 
      else if child2 is not null AND child1 is null 
      {where child2 = 2} 
      else 
      {//some other where statment } 
      "; 



    System.out.println("\nExecuting query: " + query); 
    rset = stmt.executeQuery(query); 

    return rset; 


} 

這顯然是僞代碼。 我需要幫助創建的條件執行,其中子句,以便每個「where」子句在條件有效時執行。我嘗試了類似於我在那裏但與沒有運氣的東西。

回答

3

使用StringBuilder動態構建您的查詢。

StringBuilder queryBuilder = new StringBuilder(); 
queryBuilder.append("select * from table1 "); 

if (child1 != null && child2 == null) 
    queryBuilder.append(" where child1 = 1 "); 
else if (child2 != null && child1 == null) 
    queryBuilder.append(" where child2 = 1 "); 
else 
    queryBuilder.append(" where bla "); 

// Execute queryBuilder.toString(); 
rset = stmt.executeQuery(queryBuilder.toString()); 
+0

感謝您的回答! – Princesden

1

逐個構建使用StringBuilder的查詢。首先追加"select * from table1 where "。然後用plain Java編寫if語句,並在每個塊中添加適當的子句。