将SQL Update语句转换为参数化更新查询

时间:2018-01-31 14:59:30

标签: sql vb.net ms-access

我正在将很多旧的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控件

我确信这很简单,我很遗憾,所以请帮助我解决这个问题。我在网上找到的任何内容都没有解释它。

0 个答案:

没有答案
相关问题