sqlconnection 字符串查询不支持关键字

Keyword not supported on sqlconnection string query

我需要你的帮助(眼睛)看看我哪里错了。

所以,我遇到了这个错误...

这是我正在做的...

一个登录的用户,有一个有或没有一些权限的角色。

当他输入表单时,应用程序会根据他的角色检查用户权限。在这种情况下,它会检查导航权限并禁用不允许用户添加新数据的 "Add New" 按钮。

我必须说这个查询或类似的,在其他情况下工作得很好,并编译成 SQL 查询,它 return 值 0 或 1 正确。

这是加载表单中的代码。

Extensions.UserInfo.ActiveButtons(Extensions.UserInfo.CurrentLoggedUser);

ActiveButtons 是一种静态方法,可根据登录用户禁用特定按钮...

public static bool ActiveButtons(string user)
    {
        if (CanNavigate(CurrentLoggedUser) == true)
        {
            foreach (var button in Buttons)
            {
                if(button.Name == "novoToolStripMenuItem")
                {
                    button.Visible = false;
                }
                else
                {
                    button.Visible = true;
                }
            }
            return true;
        }
        else
        {
            foreach (var button in Buttons)
            {
                button.Visible = false;
            }
            return false;
        }
    }

CanNavigate 方法检查 Role Table 的权限。她的密码...

public static bool CanNavigate(string user)
    {
        bool result;
        string str = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
        string query = "SELECT tblRole.Navigate FROM tblRole INNER JOIN tblUser ON tblRole.RoleID = tblUser.RoleID WHERE tblUser.Username = @Username";
        using (var con = new SqlConnection(query.ToString()))
        {
            using (var cmd = new SqlCommand(str, con))
            {
                con.Open();
                cmd.Parameters.AddWithValue("@Username", user);
                result = (bool)cmd.ExecuteScalar();
                return result;
            }
        }
    }

而且,你看到了吗,错误是在查询 SqlConnection 的这个方法中...

所以,它有什么问题?

在调试时,用户正在获取正确的 CurrentLoggedUser!

谢谢。

您可能交换了 strquery 变量。

using (var con = new SqlConnection(str))        
using (var cmd = new SqlCommand(query, con))

看起来更合理