總產值我有一個表中插入的記錄,並通過使用Output Inserted.KID
返回IDENTITY
列值這個存儲過程:如何從存儲過程獲得在asp.net
ALTER procedure [dbo].[InsertNode]
(
@FName nvarchar(50),
@Lname nvarchar(50),
@CDesc nvarchar(max),
@ParentID int
)
as
begin
insert into Chart (FName , Lname ,CDesc, ParentID)
Output Inserted.KID
values (@FName, @Lname, @CDesc, @ParentID)
end
C#代碼:
public void InsertNode(string FName, string LName, string cDesc, int pid)
{
try
{
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("InsertNode", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@FName", FName);
cmd.Parameters.AddWithValue("@Lname", LName);
cmd.Parameters.AddWithValue("@CDesc", cDesc);
cmd.Parameters.AddWithValue("@ParentID", pid);
con.Open();
Int32 retVal = cmd.ExecuteNonQuery();
}
}
}
catch (Exception Ex)
{
Response.Write("ERROR: Unable to save data !!</br>" + Ex.Message);
}
Response.Write("Data Saved Successfully!");
}
這是正確的方法和安全嗎?
現在,如何獲得存儲過程中的值爲OUTPUT
asp.net(c#)?
您需要使用'.ExecuteReader()'(而不是'.ExecuteNonQuery()')'的對象SqlCommand'自上現在執行此存儲過程返回一個結果設置 –
你應該看看[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/ ),並停止使用'.AddWithValue()' - 它可能會導致意想不到的結果和令人驚訝的結果... –