asp.net InsertCommand 返回最新的插入 ID

发布于 2024-08-06 13:44:21 字数 549 浏览 7 评论 0原文

我无法使用 asp.NET 中的类型化数据集从 SQL Server 2000 数据库检索最新插入的 ID。

我创建了一个表适配器,并勾选了“刷新数据表”和“生成插入、更新和删除语句”。这会自动生成 Fill 和 GetData 方法以及 Insert、Update、Select 和 Delete 语句。

我已经尝试了该线程中的所有可能的解决方案

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

但我仍然不成功,它总是返回 1(=受影响的行数)。 我不想创建单独的插入方法,因为自动生成的 insertCommand 完全适合我的需求。

正如上面线程中所建议的,我尝试更新 InsertCommand SQL 语法以添加 SELECT SCOPY_IDENTITY() 或类似的内容,我尝试添加 ReturnValue 类型的参数,但我得到的只是受影响的行数。

有人对此有不同的看法吗? 提前致谢! 斯泰因

I'm unable to retrieve the latest inserted id from my SQL Server 2000 db using a typed dataset in asp.NET

I have created a tableadapter and I ticked the "Refresh datatable" and "Generate Insert, Update and Delete statements". This auto-generates the Fill and GetData methods, and the Insert, Update, Select and Delete statements.

I have tried every possible solution in this thread

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

but I'm still unsuccesfull, it always returns 1(=number of affected rows).
I do not want to create a seperate insert method as the auto-generated insertCommand perfectly suits my needs.

As suggested in the thread above, I have tried to update the InsertCommand SQL syntax to add SELECT SCOPY_IDENTITY() or something similar, I have tried to add a parameter of type ReturnValue, but all I get is the number of affected rows.

Does anyone has a different take on this?
Thanks in advance!
Stijn

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

随心而道 2024-08-13 13:44:21

我决定放弃,我不能再在这上面浪费时间了。
我使用 Insert 语句,然后执行 select MAX(id) 查询来获取插入 ID

如果有人应该有解决方案,我很高兴在这里阅读,

谢谢
斯泰因

I decided to give up, I can't afford to waste any more time on this.
I use the Insert statement after which I do a select MAX(id) query to hget the insert ID

If anyone should have a solution, I'll be glad to read it here

Thanks
Stijn

月依秋水 2024-08-13 13:44:21

我成功找到了一种在使用表适配器插入后获取增量 id 的方法。

我的方法有点不同,我使用存储过程来进行插入,因此我的插入命令具有除 ID 之外的所有值,我让 sp 返回刚刚调用的 ID:
设置@ID=SCOPE_IDENTITY()
进而
提交交易
最后一行将是
RETURN @ID

然后我在表适配器参数中搜索 InsertCommand 并将 @RETURNVALUE 设置为表的增量 ID 列,因此在执行时会自动将返回值放在 id 字段上。

希望这有帮助

I successfully found a way to get the incremental id after insert using my table adapter.

My approach is a little different, I'm using a Store procedure to make the insert, so my insert command has all the values but the ID, I made the sp return the ID just calling:
SET @ID=SCOPE_IDENTITY()
and then
COMMIT TRAN
and last line will be
RETURN @ID

Then I searched my table adapter parameters for InsertCommand and set the @RETURNVALUE to the column of the incremental ID of the table, so when it's executed automatically put the return value on the id field.

Hope this help

坦然微笑 2024-08-13 13:44:21

您需要告诉表的表适配器刷新
更新/插入操作后的数据表。
这就是您可以做到这一点的方法。

  1. 打开TableAdapter -> 的属性默认选择查询->高级选项。并勾选刷新数据表选项。现在保存适配器。现在,当您对表适配器调用更新时,数据表将在更新/插入操作后更新[刷新],并将反映数据库表中的最新值。 如果主键或任何列设置为自动递增,则数据表将具有最近更新后的最新值。

  2. 现在您可以将更新调用为 TableAdapterObj.Update(ds .dataTable);

  3. 从 DataTable(ds.dataTable) 列中读取最新值,并在更新/插入之前将相应的值分配到子表中。这将完全按照您想要的方式工作。

替代文本 http://ruchitsurati.net/files/tds1.png

You need to tell your table's table-adapter to refresh the
data-table after update/insert operation.
This is how you can do that.

  1. Open the properties of TableAdapter -> Default Select Query -> Advnaced options. and Check the option of Refresh the data table. Save the adapter now. Now when you call update on table-adapter, the data-table will be updated [refreshed] after the update/insert operation and will reflect the latest values from database table. if the primary-key or any coloumn is set to auto-increment, the data-table will have those latest value post recent update.

  2. Now you can Call the update as TableAdapterObj.Update(ds.dataTable);

  3. Read latest values from the DataTable(ds.dataTable) coloumns and assign respective values into the child table before update/insert. This will work exactly the way you want.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文