System.Exception:语法不正确我找不到问题

时间:2009-12-09 12:25:55

标签: c# asp.net

所以我有一个带有复选框的网格视图。 这是页面背后的代码。

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:“Role”附近的语法不正确。

来源错误:

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

我找不到问题。请帮助。

4 个答案:

答案 0 :(得分:5)

考虑将SQL中的关键字UPGRADE更改为UPDATE,也许就是这样。

答案 1 :(得分:3)

偏离主题,但为什么你要抛出一个例外,这似乎是告知用户注册表格已被批准的方法?

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

答案 2 :(得分:1)

您的sql语句是不是UPDATE而不是UPGRADE?

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

答案 3 :(得分:1)

首先,你的意思是你的SQL中是UPDATE而不是UPGRADE吗?

其次,如果您按如下方式更改例外块:

catch (Exception exception)
{
    throw;
}

然后您将保留原始堆栈跟踪,为您提供导致错误的确切行号。