Eliza Maria Ответов: 1

Как я могу удалить дубликаты строк из 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[^]

1 Ответов

Рейтинг:
2

amit kalshetti

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



Удаление дубликатов записей из таблицы[^]


Eliza Maria

Спасибо за ваш ответ.Я тоже пробовал это.Не работающий.Мне не нужна ни хэш-таблица в моем коде, ни Arraylist.У меня есть datatable и dataset.Я подключен к базе данных thorugh mysql server без какой - либо привязки к datagridview

amit kalshetti

нам distinct в запрос MySQL как следовать

https://stackoverflow.com/questions/2068515/select-distinct-records-on-a-join

Eliza Maria

Спасибо тебе, Амит, за помощь, но мне кажется, ты не совсем понимаешь, чего я хочу.У меня есть оператор select, который берет значения из одной таблицы (RegisterStudent) и отображает их в datagridview.В таблице есть SN,sNr,fName и lName.Оператор insert для другой таблицы AttendanceList также имеет те же значения + dateArrival,dateDeparture,Departed,Attending и CourseID.При выполнении инструкции insert строка для инструкции select,которая имела те же значения (SN,sNr,fName,lName), исчезнет, как только другая запись будет вставлена в datagridview.Мне не нужна отчетливая запись.Это основано только на представлении.

amit kalshetti

при вставке вы хотите удалить строку из datagridview означает, что после вставки данных в gridview вы хотите удалить ее или перед вставкой строки вы хотите проверить и вставить в gridview ?