我在頁面上有兩個按鈕,一個記錄開始時間,一個記錄結束時間。已插入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