2012-11-20 38 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