回复语法错误(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()
错误是由于
- [Description] = 'New Year's Day',所以你应该转义单引号。
- 你应该用
updatehol.ExecuteNonquery()
代替updatehol.ExecuteReader()
ExecuteNonQuery()
- 将只与动作查询(创建,修改,删除,插入,更新,删除)。
- 返回查询影响的行数。 返回类型为int
- 返回值是可选的,可以分配给一个整数变量。
ExecuteReader()
- 将与动作和非动作查询(Select)一起工作
- 返回查询选择的行集合。
- 返回类型是DataReader
- 返回值是强制性的,应该分配给另一个对象DataReader。
ExecuteScalar()
- 将与包含聚合函数的非动作查询一起工作。
- 返回查询结果的第一行和第一列值。 返回类型为object。
- 返回值是强制性的,应该分配给所需类型的变量。