【问题标题】:Keyword not supported on sqlconnection string querysqlconnection 字符串查询不支持关键字
【发布时间】:2018-06-01 07:56:53
【问题描述】:

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

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

这就是我正在做的......

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

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

我必须说这个查询或类似的查询,在其他情况下工作得很好,并且编译成 SQL 查询,它正确返回值 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 方法检查角色表的权限。她的密码...

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!

谢谢。

【问题讨论】:

  • SqlConnection 构造函数需要一个连接字符串,而不是 SQL 查询。你只需要交换strquery.ToString()
  • 您正试图将您的选择语句作为连接字符串...
  • SqlConnection 的构造函数将连接字符串作为参数而不是 sql 查询,并且您正在那里传递 SELECT sql 查询。这就是您收到此错误的原因。你应该在SqlConnection 中传递str 和在SqlCommand 中传递query

标签: c# keyword


【解决方案1】:

您可能交换了 strquery 变量。

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

看起来更合理

【讨论】:

  • 当然!有时答案就在我们面前。我们把它弄复杂了!非常感谢。也许我需要睡觉!
猜你喜欢
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2021-11-09
  • 2018-07-10
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
相关资源
最近更新 更多