如何返回Identity元素的值

时间:2013-05-20 04:57:02

标签: c# asp.net sql sql-server database

我在SQL Server中有一个表,其中包含3列Id int identity),emailnvarchar(50)),passwordnvarchar(50) )。现在我想写一个查询,我可以插入emailpassword,那时,我想返回id的标识元素。

例如,我插入abc@dal.ca和密码,然后返回标识元素值。

我把它写成:

@email nvarchar(50), @password nvarchar(50), @id int

insert into addEmail(email, password) 
values(@email,@password)

return @id

这是正确的??我应该怎么做 ?我应该如何检查这是否正常工作?如果我选择

dbo.sp_addEmailReturnId abc@dal.ca, demo

然后点击执行,显示

  

'。'附近的语法不正确。

我无法找到错误。我只是试图插入电子邮件ID和密码,以便可以插入,我将获得标识元素,每个新行自动递增1。

在asp.net的代码部分中,我将如何检索id。 ?

4 个答案:

答案 0 :(得分:1)

尝试

insert into addEmail(email,password) 
OUTPUT INSERTED.ID
values(@email,@password)

答案 1 :(得分:1)

尝试此查询;它会获取你的身份

insert into addEmail(email, password) values(@email,@password) Select @@IDENTITY;

答案 2 :(得分:0)

这样做

 private int getEmail(string email, string password) 
 { 
   string cs = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString; 
   using (SqlConnection conn = new SqlConnection(cs)) 
   {  
     conn.Open(); 
     SqlCommand cmd = new SqlCommand("sp_addEmailReturnid", conn); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@email", email); 
     cmd.Parameters.AddWithValue("@password",password); 
     int nUploadId = Convert.ToInt32(cmd1.ExecuteScalar()); } // Updated Part

注意

在存储过程结束时,即插入语句后添加

Select Scope_Identity()

修改

你的过程就像这样

ALTER proc [dbo].[sp_addEmailReturnid]  
    @email                  VARCHAR(500),
    @password       VARCHAR(500)        
AS
BEGIN
 // Your insert statement here

 Select Scope_Identity()

End

答案 3 :(得分:0)

使用Scope_Identity

insert into addEmail(email,password) values(@email,@password)

SELECT SCOPE_IDENTITY()