如何在vb.net中的同一表和行中插入数据

时间:2017-01-02 06:39:26

标签: sql-server vb.net

大家好!我想使用日期时间选择器记录员工的时间和时间。节省时间是好的,但是时间不会保存。我必须按下标记为Time in和Time out的按钮。我想要做的是当我按下超时按钮时我想记录所述员工的时间。我希望有人可以帮助我,我仍然在网上搜索,但似乎没有任何工作。先谢谢你们!

我的代码看起来像这样。

cmd.CommandText = "INSERT INTO timelogTB (Time_Out) select Time_Out from timelogTB WHERE EmpNo= '" & comboxEmpno.Text & "'" & _
            "VALUES (@Time_Out)"

                  'add parameters
        With cmd.Parameters
            .Add(New SqlParameter("@Time_Out", dtpTime.Value.TimeOfDay))
        End With

1 个答案:

答案 0 :(得分:0)

使用Update,因为员工行已存在于数据库中,并使用WHERE条件将时间保存在正确的用户行中。
并将SqlParameters用于您在查询中使用的所有值。

cmd.CommandText = "UPDATE timelogTB SET Time_Out = @Time_Out WHERE EmpNo=@EmpNo"
Dim parameters As SqlParameter() =
{
    New SqlParameter With 
    { 
        .ParameterName = "@Time_Out",
        .SqlDbType = SqlDbType.DateTime,
        .Value = dtpTime.Value.TimeOfDay
    },
    New SqlParameter With 
    { 
        .ParameterName = "@EmpNo",
        .SqlDbType = SqlDbType.VarChar,
        .Value = comboxEmpno.Text
    }
}

cmd.Parameters.AddRange(parameters)

' Execute query

正如Zohar Peled所注意到的,如果timelogTB表包含不同日期的输入输出时间,则需要添加更多WHERE条件以更新正确的行。
例如,您只需要更新Time_Out为空的行。

"UPDATE timelogTB SET Time_Out = @Time_Out WHERE EmpNo=@EmpNo AND Time_Out IS NULL"