我在页面上有两个按钮,一个记录开始时间,一个记录结束时间。已插入SQL输出
起始时间按钮执行SQL插入件。 在这一点上,我需要抓住创建的主键。为此,我想使用sql命令(输出插入)。
然后单击停止时间时,该行应使用从一开始的主键在where子句中与停止时间更新。 我相信插入SQL是正确的,但我不知道如何将主键传递给下一个命令。
代码转储,与我到目前为止。
var command1 = "INSERT INTO [Time] ([Start Time], [Work Order]) OUTPUT INSERTED.PrimaryKey VALUES (@StartTime, @Work_Order)";
using (SqlConnection cnn1 = new SqlConnection(cnnString))
{
using (SqlCommand cmd1 = new SqlCommand(command1, cnn1))
{
cmd1.Parameters.AddWithValue("@StartTime", SqlDbType.DateTime).Value = System.DateTime.Now;
cmd1.Parameters.AddWithValue("@Work_Order", SqlDbType.Int).Value = e.CommandArgument;
cnn1.Open();
Label1.Text = cmd1.ExecuteScalar().ToString();
cnn1.Close();
}
}
var command = "UPDATE [Time] SET [Stop Time] = @StopTime WHERE [PrimaryKey] = @PrimaryKey";
using (SqlConnection cnn = new SqlConnection(cnnString))
{
using (SqlCommand cmd = new SqlCommand(command, cnn))
{
cmd.Parameters.AddWithValue("@StopTime", SqlDbType.DateTime).Value = System.DateTime.Now;
cmd.Parameters.AddWithValue("@PrimaryKey", *PrimaryKey from INSERT output*
cnn.Open();
cmd.ExecuteNonQuery();
}
}
你为什么不使用存储过程?在存储过程中,你可以从INSERT输出 '绝对不是一个好方法做this.'创建一个存储过程,并学习如何使用'SqlParameter'做到这一点很容易 – 2014-09-19 16:06:27
'cmd.Parameters.AddWithValue(“@的PrimaryKey”的PrimaryKey和如何在存储过程中使用'ParameterDirection.Output'在存储过程中做到这一点与您指定输出参数= SELECT SCOPE_IDENTITY()AS PK – MethodMan 2014-09-19 16:10:14
之前,所以我第一次尝试不同的东西。我只是代码,我从来没有做过一个存储过程在我的空闲时间。之前,我做这样的说法,我是我想看看是否有另一种方式我比较习惯了。 – Itomship 2014-09-19 16:57:07