dragnscalearmor Ответов: 2

Не удается использовать WHERE в SQL-запросе C# ?


По какой-то причине каждый раз, когда я пытаюсь использовать простое предложение WHERE в SQL-команде на C#, я получаю ошибку: недопустимое имя столбца.

Вот мой код, который срабатывает при проверке радиобуттона...

private void radioShowActive_CheckedChanged(object sender, EventArgs e)
        {
            using (connection = new SqlConnection(connectionString))
            using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM namesdates WHERE IsActive='Yes'", connection))
            {
                DataTable namedatesTable = new DataTable();
                adapter.Fill(namedatesTable);

                listEmployees.DisplayMember = "Name";
                listEmployees.ValueMember = "Id";
                listEmployees.DataSource = namedatesTable;

                DataTable birthdaysTable = new DataTable();
                adapter.Fill(birthdaysTable);

                listBirthdays.DisplayMember = "BirthDate";
                listBirthdays.ValueMember = "Id";
                listBirthdays.DataSource = birthdaysTable;

            }


Указано правильное имя базы данных, имя столбца является метод isactive, АдН имя базы данных namesdates. Если я использую WHERE с ID-номером, он отлично работает. С чем-либо еще он терпит неудачу с этой ошибкой. Любая помощь будет оценена по достоинству.

Что я уже пробовал:

Попробовал использовать ID-ключ вместо ссылки на столбец, и это сработало.

2 Ответов

Рейтинг:
14

dragnscalearmor

Ах... Похоже, я ссылался на старый экземпляр базы данных, а не на новый. У старого было другое имя столбца, так что, по-видимому, предложение WHERE было в порядке.


Dave Kreskowiak

..и это еще одна возможная проблема, о которой я только что подумал, когда опубликовал свой ответ.

PIEBALDconsult

Пожалуйста, не отвечайте на свой собственный вопрос, используйте "улучшить вопрос".

Рейтинг:
10

Dave Kreskowiak

Ну, ошибка говорит вам, что "IsActive" - это неправильное имя столбца. Ваш запрос настолько прост, что проблема не может быть ничем иным.

Вы случайно не назвали столбец "активен" (обратите внимание на пробел)? Если это так, то вы должны указать имя столбца в запросе как [активно] в квадратных скобках.

SELECT * FROM namesdates WHERE [Is Active]='Yes'


PIEBALDconsult

Или это немного и требует 0 или 1.

Dave Kreskowiak

Вы не должны получать "недопустимое имя столбца" на этом, Но да, я собирался поднять этот вопрос, но вместо этого оставил его в покое.