CaptainChizni Ответов: 1

Oledbexception не обработано


If Me.DataGridView5.Rows.Count > 0 Then
           If Me.DataGridView5.SelectedRows.Count > 0 Then
               Dim intStdID As String = Me.DataGridView5.SelectedRows(0).Cells(0).Value
               'open connection
               If DataGridView5.Rows.Count = 0 AndAlso DataGridView5.SelectedCells.Count = 0 Then
                   MsgBox("Please select an Account to disable", MsgBoxStyle.Exclamation)
                   Exit Sub
               End If
               If Not cnn.State = ConnectionState.Open Then
                   cnn.Open()
               End If
               'delete data
               Dim cmd As New OleDb.OleDbCommand
               cmd.Connection = cnn
               cmd.CommandText = "DELETE FROM AccAdmin WHERE Username=" & intStdID
               cmd.ExecuteNonQuery()
               'refresh data
               Me.RefreshData()

               'close connection
               cnn.Close()
           End If
       End If


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

Я получаю проблему нет значения для одного или нескольких обязательных параметров

1 Ответов

Рейтинг:
7

OriginalGriff

intStdID-это строка, которую Вы читаете из своего DataGridView - следовательно, она может содержать что-нибудь.
Когда вы объединяете строки для формирования SQL-запросов, вы делаете две вещи:
1) дать себе источник потенциальных проблем, подобных этой.
И что гораздо важнее
2) оставляя себя открытым для атак SQL-инъекций, которые могут повредить или уничтожить вашу базу данных.

Чтобы решить эту проблему, всегда используйте параметризованные запросы. Если вы этого не сделаете, делайте резервные копии своей БД через регулярные промежутки времени - я бы предложил каждую минуту или около того, - потому что это не" если " ваша БД будет повреждена, это "когда"


CaptainChizni

Я исправляю свой запрос, он работает, спасибо :)