我正在向我的数据库添加数据,但是想要检索自动生成的UnitID。
using (SqlConnection connect = new SqlConnection(connections))
{
SqlCommand command = new SqlCommand("ContactInfo_Add", connect);
command.Parameters.Add(new SqlParameter("name", name));
command.Parameters.Add(new SqlParameter("address", address));
command.Parameters.Add(new SqlParameter("Product", name));
command.Parameters.Add(new SqlParameter("Quantity", address));
command.Parameters.Add(new SqlParameter("DueDate", city));
connect.Open();
command.ExecuteNonQuery();
}
...
ALTER PROCEDURE [dbo].[Contact_Add]
@name varchar(40),
@address varchar(60),
@Product varchar(40),
@Quantity varchar(5),
@DueDate datetime
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO DBO.PERSON
(Name, Address) VALUES (@name, @address)
INSERT INTO DBO.PRODUCT_DATA
(PersonID, Product, Quantity, DueDate) VALUES (@Product, @Quantity, @DueDate)
END
答案 0 :(得分:7)
将输出参数添加到您的过程中:
@new_id int output
并在insert语句之后,为其赋值:
set @new_id = scope_identity()
将其添加到您的调用代码中:
command.Parameters.Add("@new_id", SqlDbType.Int).Direction = ParameterDirection.Output;
并检索值:
int newId = Convert.ToInt32(command.Parameters["@new_id"].Value);
答案 1 :(得分:3)
使用MSSQL更安全:
SET @AN_INT_OUTPUT_PARAM = SCOPE_IDENTITY()
或者只是
RETURN SCOPE_IDENTITY()
答案 2 :(得分:2)
在存储过程中添加到最后
SELECT SCOPE_IDENTITY();
在C#中在使用之外定义一个整数,并使用
将其分配int UnitID;
UnitID = command.ExecuteScalar();
答案 3 :(得分:0)
如果您有SQL Server 2008,请在线搜索OUTPUT子句。这是最好的方法。