2013-02-08 158 views
1

我使用一個存儲過程具有以下SQL:C#最後插入的ID

INSERT INTO [dbTblUsers]([strUsername], [strPassword]) 
VALUES (@p1,@p2); 
SELECT @@IDENTITY; 

並調用程序:

// Insert new user 
nId = daUsers.InsertQuery(textBoxUsername.Text, textBoxPassword.Text); 
// Insert new Twitter OAuth 
daTwitterOAuth.Insert(nId, textBoxConsumerKey.Text, textBoxConsumerSecret.Text, textBoxToken.Text, textBoxTokenSecret.Text); 

如何把對象@@ IDENTITY的int INT NID ? 是否這樣?

nId = (int)daUsers.InsertQuery(textBoxUsername.Text, textBoxPassword.Text); 
+0

您是否將返回的標識配置爲存儲過程的輸出參數?如果我們可以看到完整的存儲過程定義可能會有所幫助。 – paul 2013-02-08 14:30:19

回答

3

首先,不要使用@@IDENTTY - 使用SCOPE_IDENTITY();如果涉及觸發器,第一個可以給你意想不到的答案。其次;這兩個返回小數;在調用站點上投遞:IMO:

SELECT CAST(SCOPE_IDENTITY() as int) 
+0

我無法使用scope_id,它是sqlce,但現在我已經對它進行了排序。不管怎麼說,還是要謝謝你。 – luigivampa 2013-02-08 18:59:58