我正在将很多旧的SQL代码转换为使用Parameters而不是直接的SQL语句,我遇到了一个我无法弄清楚的障碍。
以下代码运行正常:
Dim cmd1 As New OleDb.OleDbCommand("UPDATE [Time Card Hours] SET
StartTime=#" & dtCheckin.Value.ToString & "#, EndTime=#" & dtCheckin.Value.ToString & "# WHERE
Store='" & sStoreID & "' AND TaskID=" & cmbTask.SelectedValue.ToString & " AND StartTime=EndTime", con)
cmd1.ExecuteNonQuery()
以下是我认为应该使用参数:
Dim cmd2 As New OleDb.OleDbCommand("UPDATE [Time Card Hours] SET
StartTime=@pDate, EndTime=@pDate WHERE Store=@pStoreID AND TaskID=@pTaskID AND StartTime=EndTime", con)
With cmd2.Parameters
.AddWithValue("@pStoreID", sStoreID)
.AddWithValue("@pTaskID", cmbTask.SelectedValue)
.Add("@pDate", OleDb.OleDbType.Date).Value = dtCheckin.Value
End With
cmd2.ExecuteNonQuery()
ExecuteNonQuery()
似乎在运行。它没有引发任何异常,但它根本不更新数据库,而第一个例子则没有。
sStoreID
是一个等于“0135”的字符串
cmbTaskID
是一个组合框,其整数.SelectedValue
为4312
dtCheckin
是一个具有有效日期/时间的DatePicker控件
我确信这很简单,我很遗憾,所以请帮助我解决这个问题。我在网上找到的任何内容都没有解释它。