2013-09-01 28 views
0

我使用switch..case顯示我的網頁上不同的事情取決於產品編號:訪問當前的情況下,作爲一個變量

  switch (productID) 
      { 
       case 1: 
        string theSQL = "SELECT * FROM products WHERE id = " + theCurrentCase + "ORDER BY id DESC"; 
        DataTable theDT = dbConnectionAndQuery.dbResults(theSQL, ConfigurationManager.ConnectionStrings["mainConn"].ConnectionString); 
        break; 
      } 

有沒有辦法在訪問的情況下值(即1上面的例子)?

回答

2

productID將匹配1如果代碼塊是要執行的,所以你知道已經知道的情況下值是什麼(它將是productID)。

請注意,不要連接SQL語句,因爲它會讓您容易受到SQL注入的影響。改爲使用Parameters。在這種情況下,它必須匹配1才能執行,但其他情況下可能不安全(例如,如果有的話,可能在default的情況下)。在創建SQL查詢時,使用Parameters是個好習慣。

+0

謝謝你的回答。這隻適用於本地網站,所以我不會僅僅因爲懶惰而使用參數。不過謝謝你的關心。 – adaam

+0

不客氣。只是要注意的東西:) – keyboardP

+0

您還可以添加具有已知名稱的評估列來表示應用的情況。 「SELECT *,1 asSelectedCase FROM products WHERE id =」+ theCurrentCase +「ORDER BY id DESC」; –

7

當然,使用productID :)

filler

filler

+0

思維畫了一個空白。哦,太簡單了!感謝您的迴應! – adaam

+1

如果問題中的'switch'部分只有* 1 *'case'標籤(並且沒有'default'標籤),那麼您可以使用相同的常量,這裏是'1'。如果該部分有多個'case'標籤和/或'default'標籤,您可以再次使用'switch'表達式,這裏是'productID',就像在這個答案中一樣。然而,表達式當然會被再次評估,如果評估的價格昂貴或者它可能第二次評估新值(比如'switch(DateTime.Today.DayOfWeek){...}'),它會在'switch'語句之前引入一個局部變量是很好的。 –

相關問題