OriginalGriff
"Новая таблица" создается потому, что вы явно сказали ей об этом:
DataTable dt = new DataTable();
Если вы хотите переработать существующую таблицу, то не создавайте новый экземпляр, а используйте существующий!
Но это тривиально по сравнению с главной проблемой, которую вы еще не заметили: никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого всегда используйте параметризованные запросы.
Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.
Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?
ishuishika
Спасибо, сэр/мама,
я понял, что использовал новый datatable и, следовательно, дополнительную таблицу для создания.
Итак ... теперь о том, как использовать параметризованные запросы. Если я использую это, будет ли эта опция поиска работать нормально и отображаться в той же таблице, которая уже была создана?
Заранее спасибо..
OriginalGriff
Параметризованные запросы не имеют ничего общего с тем, "какую таблицу он использует" - это зависит от вас. Использование конкатенации строк-это отдельная проблема, которую вам нужно решить во всем вашем приложении, а не только в этом фрагменте кода.
Google может помочь:
https://www.google.com/search-что?q=Parameterised+queries+c%23&oq=Parameterised+queries+c%23&aqs=chrome..69i57j0l7.2102j0j7&sourceid=chrome&ie=UTF-8