#vb.net #updates #oledbcommand
#vb.net #Обновления #oledbcommand
Вопрос:
Он отвечает на синтаксическую ошибку (missing operator) in query expression on the executereader
это значение, которое я получаю при запуске запроса.
"Update [Birthdays] set [ID] = 'RH1' where [ID] = 'RH' and [Date] = '1/1/2014' and [Description] = 'New Year's Day'"
Какая-либо ошибка в моем запросе? Заранее спасибо.
Это мой код:
Private Sub DGHolidays_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGHolidays.CellEnter
Dim Row = DGHolidays.CurrentRow.Index
col1 = DGHolidays.Rows(Row).Cells(0).Value()
col2 = DGHolidays.Rows(Row).Cells(1).Value()
col3 = DGHolidays.Rows(Row).Cells(2).Value()
End Sub
Private Sub DGHolidays_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGHolidays.CellValueChanged
Dim Row = DGHolidays.CurrentRow.Index
Dim ColI = DGHolidays.CurrentCell.ColumnIndex
Dim Col = DGHolidays.Columns(ColI).HeaderText
If con.State = ConnectionState.Closed Then
con.Open()
End If
MessageBox.Show(DGHolidays.Rows(Row).Cells(ColI).Value.ToString())
Dim updatehol As OleDbCommand = New OleDbCommand("Update [Birthdays] set [" amp; Col amp; "] = '" amp; DGHolidays.Rows(Row).Cells(ColI).Value.ToString() amp; "' where [ID] = '" amp; col1 amp; "' and [Date] = '" amp; col2 amp; "' and [Description] = '" amp; col3 amp; "'", con)
updatehol.ExecuteReader()
Ответ №1:
Ошибки вызваны
- [Описание] = ‘Новогодний день’, поэтому вам следует избегать одинарных кавычек.
- Вы должны использовать
updatehol.ExecuteNonquery()
вместоupdatehol.ExecuteReader()
ExecuteNonQuery()
- будет работать только с запросами действий (Создать, изменить, удалить,вставить, обновить, Удалить).
- Возвращает количество строк, обработанных запросом.
- Возвращаемый тип — int
- Возвращаемое значение необязательно и может быть присвоено целочисленной переменной.
ExecuteReader()
- будет работать с запросами действия и бездействия (Выберите)
- Возвращает коллекцию строк, выбранных запросом.
- Возвращаемый тип — DataReader.
- Возвращаемое значение является обязательным и должно быть присвоено другому объекту DataReader.
ExecuteScalar()
- будет работать с запросами, не требующими действий, которые содержат агрегатные функции.
- Возвращает значение первой строки и первого столбца результата запроса.
- Возвращаемый тип — object.
- Возвращаемое значение является обязательным и должно быть присвоено переменной требуемого типа.
Комментарии:
1. хорошо. итак, я обнаружил ошибку в тексте из базы данных, содержащем qoutes. я просто использую функцию для изменения строки, делая ее ‘New Year’s Day’. Спасибо
2. @MarkDave — Что не лучший способ выполнить это. Вместо этого вы должны использовать параметризованный запрос, чтобы вам не приходилось беспокоиться об этом. Кроме того, ваш код может быть уязвим для атак с использованием sql-инъекций.