【问题标题】:System.Exception: Incorrect syntax I can't find the problemSystem.Exception:语法不正确我找不到问题
【发布时间】:2009-12-09 20:32:58
【问题描述】:

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

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 行:

我找不到问题。请帮忙。

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      题外话,但你到底为什么要抛出一个似乎是通知用户注册表已获批准的方法的异常?

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

      【讨论】:

      • 到底为什么在这两种方法中,OP 都捕获所有异常只是为了再次将它们作为普通异常重新抛出? (并在此过程中丢失所有堆栈跟踪、特定于异常的信息等。)
      【解决方案3】:

      你的sql语句不应该是UPDATE而不是UPGRADE吗?

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

      【讨论】:

        【解决方案4】:

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

        其次,如果您按如下方式更改异常块:

        catch (Exception exception)
        {
            throw;
        }
        

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

        【讨论】:

        • 或者,如果你不打算对它做任何事情,就不要费心去抓它。
        猜你喜欢
        • 2020-02-21
        • 1970-01-01
        • 2023-04-11
        • 2014-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-03
        • 1970-01-01
        相关资源
        最近更新 更多