2013-09-01 24 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'语句之前引入一个局部变量是很好的。 –

相关问题