使用TableAdapter插入后返回错误的ID

发布于 2024-10-13 15:18:19 字数 355 浏览 1 评论 0原文

当我使用 TableAdapter< 执行插入时/code>

int pid = this.purchaseTableAdapter.Insert(supplierid, datetime, "", 
    totalprice, amountpaid);

返回错误的 id 1,而应该返回 15。

如何获取正确的 ID?

When I perform an insert with TableAdapter:

int pid = this.purchaseTableAdapter.Insert(supplierid, datetime, "", 
    totalprice, amountpaid);

It returns the incorrect id 1 while it should return 15.

How to get the correct ID?

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

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

发布评论

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

评论(4

燕归巢 2024-10-20 15:18:19

将执行模式属性设置为标量那么你就得到了ID,否则行会受到影响。您可以不在查询向导中设置查询的属性窗口。

alt text

(图 28)

set the execute mode property to Scalar, then you get the ID, otherwise the rows-affected. You set the property properties window of the query not in the Query wizard.

alt text

(fig 28)

花伊自在美 2024-10-20 15:18:19

表适配器返回受影响的行数而不是 ID。

The table adapter returns the number of rows affected not the id.

情绪失控 2024-10-20 15:18:19

我假设您有一个带有自动生成值的 pid 列。

回复此帖子有答案了。

select @@pid 

从同一个打开的连接应该可以做到这一点。

I'm assuming that you have a pid column with an autogenerated value.

The reply to this post has the answer.

select @@pid 

From the same open connection should do it.

月棠 2024-10-20 15:18:19

1) 存储过程:

存储过程的主体必须与此类似:

INSERT INTO MyTable (C1, C2, C3) VALUES (@c1, @c2, @c3);

SELECT SCOPE_IDENTITY();

这里重要的部分是使用 SELECT SCOPE_IDENTITY() 而不是 RETURN< /strong> SCOPE_IDENTITY()。
编辑:如果您调用函数而不是存储过程,则使用 RETURN 将起作用。

2) 表适配器:

右键单击表适配器,然后从上下文菜单中选择“添加查询”。弹出TableAdapter查询配置向导:

  • 选择命令类型:选择“使用现有存储过程”。

  • 选择SP返回的数据形状:选择“单个值”。

  • 为方法输入适当的名称,例如InsertXYZ

3) 您的代码:< /strong>

现在,当您在表适配器上调用方法 InsertXYZ 时,它将返回一个可以转换为 Int32 的对象。该值就是新记录的 ID!

1) The stored procedure:

The body of your stored procedure must be similar to this:

INSERT INTO MyTable (C1, C2, C3) VALUES (@c1, @c2, @c3);

SELECT SCOPE_IDENTITY();

The important part here is to use SELECT SCOPE_IDENTITY() and not RETURN SCOPE_IDENTITY().
Edit: using RETURN will work if you are calling a function instead of a stored procedure.

2) The table adapter:

Right click on your table adapter and select Add Query from the context menu. The TableAdapter Query Configuration Wizard pops-up:

  • Choose a Command Type: select "Use existing stored procedure".

  • Choose the shape of data returned by the SP: select "A single value".

  • Enter an appropriate name for the method, e.g. InsertXYZ

3) Your code:

Now, when you call the method InsertXYZ on your table adapter, it will return an object which you can cast to Int32. That value is the ID of the new record!

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