2012-11-20 42 views
0

我怎样才能从我刚刚写入到数据库中的行检索id从行检索的ID我刚刚写入数据库

基本上,我在我的ASP.NET需要写两个表预订表格的函数,但是我需要什么已经写在表1中的ID,也可以储存在表2中

所以:

  1. table 1
  2. 检索idtable 1
  3. table 2

我怎样才能做到这一点?

问候 茶

+0

我们在谈论什么数据库? – Blachshma

+0

是否使用标识列给你列ID? –

+0

这是一个SQL Server 2008的,但我在我的ASP.NET代码,没有存储过程使用说明书。 – TeaDrinkingGeek

回答

0

在Asp.Net与SQL 2008服务器,您可以使用ExecuteScalar功能是这样的:

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

OR

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

在最后一个例子,我的通知“M执行插入,然后在同一请求中一个SELECT ...

并获得身份使用:

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

@TeaDrinkingGeek - 是的,它会 – Blachshma

+0

这是否取代我的cmd.ExecuteNonQuery() – TeaDrinkingGeek

+0

我得到错误:指定的转换无效。 – TeaDrinkingGeek

0

如果您使用SQL服务器使用SCOPE_IDENTITY()

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

INSERT INTO Table1 ... 

DECLARE @RecordID int = SCOPE_IDENTITY() 

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

不使用存储过程,你可以附上SELECT语句来你的SQL结尾:

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

怎么办瓦特/使用存储过程?只是ASP.NET代码 – TeaDrinkingGeek

+0

@TeaDrinkingGeek更新我的回答 – Curt