我怎樣才能從我剛剛寫入到數據庫中的行檢索id
?從行檢索的ID我剛剛寫入數據庫
基本上,我在我的ASP.NET需要寫兩個表預訂表格的函數,但是我需要什麼已經寫在表1中的ID,也可以儲存在表2中
所以:
- 寫
table 1
- 檢索
id
從table 1
- 寫
table 2
我怎樣才能做到這一點?
問候 茶
我怎樣才能從我剛剛寫入到數據庫中的行檢索id
?從行檢索的ID我剛剛寫入數據庫
基本上,我在我的ASP.NET需要寫兩個表預訂表格的函數,但是我需要什麼已經寫在表1中的ID,也可以儲存在表2中
所以:
table 1
id
從table 1
table 2
我怎樣才能做到這一點?
問候 茶
在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();
@TeaDrinkingGeek - 是的,它會 – Blachshma
這是否取代我的cmd.ExecuteNonQuery() – TeaDrinkingGeek
我得到錯誤:指定的轉換無效。 – TeaDrinkingGeek
如果您使用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();
怎麼辦瓦特/使用存儲過程?只是ASP.NET代碼 – TeaDrinkingGeek
@TeaDrinkingGeek更新我的回答 – Curt
我們在談論什麼數據庫? – Blachshma
是否使用標識列給你列ID? –
這是一個SQL Server 2008的,但我在我的ASP.NET代碼,沒有存儲過程使用說明書。 – TeaDrinkingGeek