Как я могу удалить дубликаты строк из datagridview при вставке?
Привет,
У меня есть вопрос относительно моего datagridview.Для моего datagridview я использую datatable и dataset.У меня есть 2 sql - запроса, которые имеют отношение к заполнению dg.Один "
string query = " select * from RegisterStudent p inner join StudentCourses c on p.SN = c.StudentId where c.CourseId = '" + cmbClassId.SelectedValue.ToString() + "'";whre cmbClassId-это идентификатор курса студента.Этот запрос берет всех студентов из таблицы RegisterStudent,специфичной для этого курса, и отображает ее в dg.теперь я делаю это, потому что хотел бы иметь список, отображаемый со всеми студентами для этого курса.Моя проблема возникает, когда мне приходится вставлять эти значения плюс другие в другую таблицу под названием AttendanceList.Я делаю это вот так:"
var query = "Insert into AttendanceList(SN,sNr,fName,lName,dateArrival,Attending,Departed,CourseId)Values(@SN,@sNr,@fName,@lName,@dateArrival,@Attending,@Departed,@ClassId) ";Для них обоих это работает отлично,но мой вопрос заключается в следующем:как я могу удалить дубликаты строк в dg при вставке значений в AttendanceList?Должен ли я сделать это через запрос или связав dg?И если это связано с dg,как я могу сделать это так, чтобы он удалил повторяющиеся строки?Я упоминаю, что перепробовал все возможные варианты для этого, но безрезультатно.Заранее благодарю вас!
Что я уже пробовал:
Как удалить дубликат строки из datagridview в c#? - переполнение стека[^]
https://www.c-sharpcorner.com/forums/remove-duplicates-from-datagridview-c-sharp
Удалить дубликаты строк в datagridview[^]
https://www.codeproject.com/Articles/36697/Eliminate-Duplicate-Values-from-the-Grid-View
https://www.aspsnippets.com/Articles/Remove-Delete-Duplicate-Rows-Records-from-DataTable-using-C-and-VBNet.aspx
И я тоже попробовал это сделать:
int rowIndex = 0; if (!this.dg.Rows[rowIndex].IsNewRow) { this.dg.Rows.RemoveAt(rowIndex); }
когда у меня есть rowIndex=0, он удалит строку с индексом 0, если она похожа на строку из оператора select.В returen я бы хотел, чтобы он удалил один из select.Если я изменюсь на rowIndex=dg.Rows.Подсчитайте, что это даст мне индекс вне диапазона исключения.
Richard Deeming
string query = " select * from RegisterStudent p inner join StudentCourses c on p.SN = c.StudentId where c.CourseId = '" + cmbClassId.SelectedValue.ToString() + "'";
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]