Синтаксическая ошибка (отсутствует оператор) в выражении запроса. Оператор обновления

Он отвечает Синтаксическая ошибка (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 [" & Col & "] = '" & DGHolidays.Rows(Row).Cells(ColI).Value.ToString() & "' where [ID] = '" & col1 & "' and [Date] = '" & col2 & "' and [Description] = '" & col3 & "'", con)
    updatehol.ExecuteReader()

person Mark Dave    schedule 04.07.2014    source источник


Ответы (1)


Эррос из-за

  1. [Описание] = «Новый год», поэтому вам следует избегать одинарных кавычек.
  2. Вы должны использовать updatehol.ExecuteNonquery() вместо updatehol.ExecuteReader()

ExecuteNonQuery()

  1. будет работать только с запросами действий (создать, изменить, удалить, вставить, обновить, удалить).
  2. Возвращает количество строк, обработанных запросом.
  3. Тип возвращаемого значения — целое
  4. Возвращаемое значение является необязательным и может быть присвоено целочисленной переменной.

ExecuteReader()

  1. будет работать с запросами с действием и без действия (выбрать)
  2. Возвращает коллекцию строк, выбранных запросом.
  3. Тип возвращаемого значения — DataReader.
  4. Возвращаемое значение является обязательным и должно быть присвоено другому объекту DataReader.

ExecuteScalar()

  1. будет работать с запросами без действия, которые содержат агрегатные функции.
  2. Возвращает значение первой строки и первого столбца результата запроса.
  3. Тип возвращаемого значения — объект.
  4. Возвращаемое значение является обязательным и должно быть присвоено переменной требуемого типа.

Справочник

person Vignesh Kumar A    schedule 04.07.2014
comment
хорошо. поэтому я нашел ошибку в тексте из базы данных с кавычками. Я просто использую функцию, чтобы изменить строку, сделав ее «Новым годом». Благодарность - person Mark Dave; 04.07.2014
comment
@MarkDave - это не лучший способ добиться этого. Вместо этого вы должны использовать параметризованный запрос, чтобы вам не пришлось об этом беспокоиться. Кроме того, ваш код может быть уязвим для атак SQL-инъекций. - person Chris Dunaway; 09.07.2014