使用TableAdapter插入后返回不正确的ID
当我使用TableAdapter
执行插入时:
int pid = this.purchaseTableAdapter.Insert(supplierid, datetime, "", totalprice, amountpaid);
它返回错误的id 1
而它应该返回15。
如何获得正确的ID?
将执行模式属性设置为Scalar , 然后获取ID ,否则受行影响。 您不在查询向导中设置查询的属性属性窗口。
(图28)
表适配器返回受影响的行数而不是id。
我假设你有一个带有自动生成值的pid列。
对这篇文章的回复有答案。
select @@pid
从相同的开放连接应该做到这一点。
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!
怎么样这篇文章ASP.NET tableadapter插入没有返回正确的标识值
我真的不知道c#但函数可能会返回受影响的行数,或者布尔值1表示true,0表示false表示?