当我使用TableAdapter
执行插入时:
int pid = this.purchaseTableAdapter.Insert(supplierid, datetime, "",
totalprice, amountpaid);
它返回错误的ID 1
,而它应该返回15。
如何获取正确的ID?
答案 0 :(得分:11)
答案 1 :(得分:7)
表适配器返回受影响的行数而不是id。
答案 2 :(得分:1)
答案 3 :(得分:1)
1)存储过程:
存储过程的主体必须与此类似:
INSERT INTO MyTable (C1, C2, C3) VALUES (@c1, @c2, @c3);
SELECT SCOPE_IDENTITY();
这里重要的部分是使用 SELECT SCOPE_IDENTITY()而不是 RETURN SCOPE_IDENTITY()。 编辑:如果您正在调用函数而不是存储过程,则使用RETURN将起作用。
2)表适配器:
右键单击表适配器,然后从上下文菜单中选择“添加查询”。弹出TableAdapter查询配置向导:
选择命令类型:选择“使用现有存储过程”。
选择SP返回的数据形状:选择“单个值”。
为方法输入适当的名称,例如的 InsertXYZ 强>
3)您的代码:
现在,当您在表适配器上调用方法 InsertXYZ 时,它将返回一个可以强制转换为Int32的对象。该值是新记录的ID!
答案 4 :(得分:0)
这篇文章ASP.NET tableadapter insert not returning the correct identity value
怎么样?我真的不知道c#,但函数可能会返回受影响的行数,或者布尔值1表示true,0表示false表示?