Babai JermenKeller Sasmal Ответов: 1

Как искать идентификатор или имя по критериям ?


Ну, я пытаюсь найти записи базы данных, которые будут отражены в моем DGV (DataGridView). Мой DGV привязывается с помощью bindingsource и tableadapter при запуске формы с поиском критериев, который приводит к отображению конкретных записей, которые я хочу.

Моя таблица (userdata) содержит все данные пользователей (студент, факультет) вместе взятые, разделенные числами типа (факультет=1 и студент=2). Но я добавил текстовое поле для поиска по facultyDGV, которое показывает также студентов.

Таблица имеет имя столбца authentic, которое содержит цифры 1 и 2 для разделения целей.

Как я могу избавиться от этого ?

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

Мой запрос загрузки DGV = "SELECT * from [userdata] WHERE authentic=1", отлично работает и показывает факультет.

Мой запрос SearchTextBox = "SELECT * from [userdata] WHERE name like '%"
searchTextBox.text "%' или id like '%"
searchTextBox.text "%' и authentic=1", не работает и показывает всех пользователей.

Я тоже пробовала = "выбрать * из [данных], где имя как '%" поле searchtextbox.текст "%' и аутентичные=1", которая работает над поиском имени только, но я хочу, чтобы осуществить поиск, используя же поле searchtextbox с именем, ID и другая информация, которую я хочу.

помогите мне построить этот запрос.

Спасибо codeproject.

1 Ответов

Рейтинг:
7

#realJSOP

0) является ли ваше поле Id *действительно* строкой? В большинстве случаев поле Id в таблице является целым числом.

1) Вы не должны формировать свой запрос, объединяя строки с такими переменными, потому что вы рискуете внедрить sql-инъекцию. Вы должны установить параметры в SqlCommand объект, используемый для выполнения запроса. Есть много ссылок на это, которые легко обнаружить даже при беглом поиске в google.

2) предполагая, что @authentic = 2 и @name = 'Steve';

"SELECT * from [userdata] WHERE authentic=" + @authentic + " and name like '%" + @name + "%'"


Приведенный выше запрос даст вам всех студентов со словом "Стив" где-то в названии.

Я не уверен, что Id имеет отношение к данному моему первому вопросу.


CHill60

Ай! Конкатенированные строки для создания sql запросов никогда не являются хорошей идеей

#realJSOP

Да, я уже упоминал об этом. Я редактировал свой ответ пару раз.

Babai JermenKeller Sasmal

Джон Симмонс спасибо за ответ, но позвольте мне сказать вам, что мой идентификатор-это строка, а не первичный ключ. Я хочу, чтобы пользователи настраивали\изменяли ID так, как они хотят. Но фактический первичный ключ используется только в таблице базы данных. Кстати, это не проблема.

Основная проблема заключается в том, что "SELECT * from [userdata] WHERE authentic=" + @authentic + " and name like '%" + @name + " % '" - это единственное имя поиска по критериям. Но как я могу искать несколько полей, таких как ID, имя и т. д., По критериям authentic=1 ?