3

我無法在asp.NETasp.net的InsertCommand返回最新插入ID

使用強類型DataSet

我創建一個TableAdapter從我的SQL Server檢索最新插入的ID2000分貝我打勾「刷新數據表「和」生成插入,更新和刪除語句「。這將自動生成Fill和GetData方法以及Insert,Update,Select和Delete語句。

我已經試過各種可能的解決方案,在這個線程

http://forums.asp.net/t/990365.aspx

但我仍然unsuccesfull,它總是返回1(=受影響的行數)。 我不想創建一個單獨的插入方法,因爲自動生成的insertCommand非常適合我的需要。

正如上面的線程中所建議的,我試圖更新InsertCommand SQL語法來添加SELECT SCOPY_IDENTITY()或類似的東西,我試圖添加一個類型爲ReturnValue的參數,但是我得到的只是受影響的數量行。

有沒有人有不同的看法呢? 在此先感謝! Stijn

回答

0

我成功地找到了一種方法使用我的表適配器得到插入後增量ID。

我的方法有點不同,我使用Store過程來創建插入,所以我的插入命令具有除ID之外的所有值,我讓sp返回了ID,只是調用: SET @ ID = SCOPE_IDENTITY() 然後 COMMIT TRAN 和最後一行將返回 @ID

然後我搜索我的表適配器參數InsertCommand並將@RETURNVALUE設置表中的增量ID的列,所以當它的執行會自動將返回值放在id字段中。

希望這有助於

1

我決定放棄,我不能浪費任何更多的時間在這個。 我使用INSERT語句之後,我做了選擇MAX(ID)查詢hget插入ID

如果任何人都應該有一個解決方案,我會很高興在這兒讀

感謝 斯泰恩

+0

我們總是使用單獨的 – 2009-09-28 12:29:41

+0

如果你使用單獨插入查詢,而不是自動生成? – 2009-09-28 12:30:13

+0

使用Max(id)是不好的做法,如果很多用戶輸入數據,將返回錯誤的ID ... – 2009-09-29 04:18:00

0

在更新/插入操作之後,您需要告訴表的表格適配器刷新 數據表。 這是你如何做到的。 >默認選擇查詢 - - 的的TableAdapter

  1. 打開屬性> Advnaced選項。並檢查選項刷新數據表。現在保存適配器。現在,當您調用表適配器上的更新時,數據表將在更新/插入操作後更新[刷新],並將反映數據庫表中的最新值。 如果主鍵或任何色彩設置爲自動遞增,則數據表將在最近更新後具有最新值。

  2. 現在你可以調用更新爲TableAdapterObj.Update(ds.dataTable);

  3. 閱讀最新更新之前,從數據表(ds.dataTable)coloumns值,並分配相應的值到子表/插入。這將按照你想要的方式工作。

alt text http://ruchitsurati.net/files/tds1.png