从我刚刚写入数据库的行中检索id

时间:2012-11-20 11:17:48

标签: asp.net sql-server sql-server-2008

如何从我刚刚写入数据库的行中检索id

基本上,我在ASP.NET中有一个函数需要写入两个表的预订表单,但是我需要表1中编写的id,也可以存储在表2中。

所以:

  1. 写信给table 1
  2. id
  3. 检索table 1
  4. 写信给table 2
  5. 我怎样才能做到这一点?

    此致 茶

2 个答案:

答案 0 :(得分:0)

如果您使用 SQL Server ,请使用SCOPE_IDENTITY()

http://msdn.microsoft.com/en-us/library/ms190315.aspx

INSERT INTO Table1 ...

DECLARE @RecordID int = SCOPE_IDENTITY()

INSERT INTO Table2 ... VALUES (@RecordID....)

不使用存储过程,您可以在SQL的末尾附加SELECT语句:

cmd.CommandText = "INSERT INTO Table 1 ...... ; SELECT SCOPE_IDENTITY()"
int recordId = (int)cmd.ExecuteScalar();

答案 1 :(得分:0)

在带有Sql 2008服务器的Asp.Net中,您可以使用 ExecuteScalar 这样的功能:

string query = "INSERT INTO Table1 (id_field) 
                OUTPUT SCOPE_IDENTITY()
                VALUES (...)";

OR

string query = "INSERT INTO Table1 (...) VALUES (...); SELECT SCOPE_IDENTITY() ";

在最后一个例子中,注意我正在执行INSERT,然后在同一个请求中执行SELECT ...

并获得身份使用:

int lastId = (int)command.ExecuteScalar();