Ключевое слово не поддерживается в запросе строки sqlconnection - PullRequest
0 голосов
/ 01 июня 2018

Мне нужна ваша помощь (глаза), чтобы понять, в чем я здесь не прав.

Итак, у меня возникла эта ошибка ...

enter image description here

Вот что я делаю ...

Пользователь, вошедший в систему, имеет роль, у которой есть некоторые разрешения или нет.

Когда он вводит форму, приложениепроверяет разрешения пользователя на основе его роли.В этом случае он проверяет разрешения на навигацию и отключает кнопку «Добавить новый», которая запрещает пользователю добавлять новые данные.

Я должен сказать, что этот запрос или аналогичный, очень хорошо работает в других ситуациях и скомпилирован вSQL-запрос, он возвращает значение 0 или 1. Правильно.

А вот код в форме загрузки.

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

ActiveButtons - это статический метод, который отключает определенную кнопку, основанную на LoggedВ User ...

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!

Спасибо.

1 Ответ

0 голосов
/ 01 июня 2018

Вы, вероятно, поменяли местами переменные str и query.

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

выглядит намного правдоподобнее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...