2009-12-09 26 views
1

所以我有一個網格視圖與複選框。 這是頁面背後的代碼。System.Exception:錯誤的語法我找不到問題

protected void BtnApproveUsers_Click(object sender, EventArgs e) 
    { 

     var num = new List<int>(); 

     try 
     { 
      for (var i = 0; i< GvApproveUser.Rows.Count; i++) 
      { 
       var row = GvApproveUser.Rows[i]; 
       var isChecked = ((CheckBox) row.FindControl("ChbSelect")).Checked; 

       if (isChecked) 
       { 
        num.Add(System.Convert.ToInt32(GvApproveUser.Rows[i].Cells[1].Text)); 
        Authentication.ApproveUser(num, GvApproveUser.Rows.Count); 
       } 
      } 
      throw new Exception("The registration forms were approved."); 
     } 
     catch (Exception exception) 
     { 

      throw new Exception(exception.Message); 
     } 

    } 

這是方法。

public static void ApproveUser(List<int> userIds, int rowCount) 
    { 
     using (var connection = Utils.Database.GetConnection()) 
      try 
      { 
       for (var i = 0; i < rowCount; i++) 
       { 
        using (var command = new SqlCommand("UPGRADE [Users] SET [Role] = @role WHERE [UserID] = @userId", connection)) 
        { 
         command.Parameters.AddWithValue("@role", "User"); 
         command.Parameters.AddWithValue("@userId", userIds[i]); 

         command.ExecuteNonQuery(); 
        } 
       } 
      } 
      catch (Exception exception) 
      { 

       throw new Exception(exception.Message); 
      } 

    } 

這是個例外:

附近有語法錯誤 '角色'。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.Exception:「角色」附近的語法不正確。

源錯誤:

52行:{ 53行:
線54:拋出新的異常(exception.Message); 第55行:} 第56行:

我找不到問題。請幫助。

回答

5

考慮將您的SQL中的關鍵字UPGRADE更改爲UPDATE,也許就是這樣。

1

你的sql語句應該不是UPDATE而是UPGRADE嗎?

using (var command = new SqlCommand("UPDATE [Users] SET [Role] = @role WHERE [UserID] = @userId", connection)) 
1

首先,你的意思是UPDATE而不是UPGRADE在你的sql?

其次,如果你改變你的異常塊如下:

catch (Exception exception) 
{ 
    throw; 
} 

,那麼你將保留原始堆棧跟蹤給你造成錯誤的確切的行號。

+2

或者,如果你不打算對它做任何事情,不要打擾它。 – cjk 2009-12-09 12:36:57

3

題外話,你爲什麼拋出一個異常,似乎是通知用戶註冊表已被批准?

throw new Exception("The registration forms were approved."); 
+1

爲什麼地球上,在這兩種方法中,OP是否會捕獲所有的異常,只是爲了重新拋出它們而成爲一個香草異常呢? (並且在此過程中丟失所有堆棧跟蹤,異常特定的信息等。) – LukeH 2009-12-09 13:08:07