xkarmax Ответов: 1

Почему dispose() не работает с моим SQL-запросом?


я работаю с новым модулем для моей системы. но всякий раз, когда я использую dispose (), я все равно получаю старое значение, и оно будет добавляться к новому значению. Я уже использую .dispose() для запроса, который я использовал, но он не имеет никакого эффекта всякий раз, когда я ищу новые данные, он просто добавляет старое значение к новому сгенерированному значению. У меня нет никаких проблем с отображением данных. Проблема у меня есть в том, что я должен закрыть форму для поиска новых данных, а не просто искать.

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

Private Sub dataload()
   DataGridView1.DataSource = Nothing
   Dim ds As DataSet
   Dim dr as DataRow
   ds = sqlFunctions.getTable(tmp_str1, connectionstring)

   For i = 0 To ds.Tables(0).Rows.Count - 1       
     dr = ds.Tables(0).Rows(i)
     DataGridView1.Rows.Add(CDate(dr("date_submit")).ToString("MM/dd/yyyy"))
   Next
   ds.Dispose()
End Sub

Richard Deeming

ds = sqlFunctions.getTable(tmp_str1, connectionstring)

Похоже, вы написали вспомогательный метод, который заставит вас писать код, уязвимый для SQL-инъекция[^].

НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

xkarmax

Спасибо! я обязательно прочитаю эту статью и просмотрю свои коды.

1 Ответов

Рейтинг:
2

Richard MacCutchan

Почему вы вручную добавляете строки в DataGridView вместо использования источника данных? Каждый раз, когда вы добавляете новый набор данных из базы данных, у вас все еще будут старые данные. Используйте параметр источника данных, чтобы все работало правильно.


xkarmax

так что я должен использовать это
ДС = sqlFunctions.метод Gettable(tmp_str1, параметр connectionString)
DataGridView1.DataSource = ds.Table(0) ??

Richard MacCutchan

Я ожидаю, что это будет правильно. Простой тестовый запуск докажет это.