0

我在 SQL Server 中有一个包含 3 列Id( int identity)、email( nvarchar(50))、password( nvarchar(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

4 回答 4

1

尝试

insert into addEmail(email,password) 
OUTPUT INSERTED.ID
values(@email,@password)
于 2013-05-20T05:05:31.230 回答
1

试试这个查询;它会为您获取 id

insert into addEmail(email, password) values(@email,@password) Select @@IDENTITY;
于 2013-05-20T10:51:41.213 回答
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
于 2013-05-20T05:01:10.680 回答
0

使用Scope_Identity

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

SELECT SCOPE_IDENTITY()
于 2013-05-20T05:02:54.613 回答