当我执行插入时TableAdapter
:
int pid = this.purchaseTableAdapter.Insert(supplierid, datetime, "",
totalprice, amountpaid);
它返回不正确的 id 1
,而它应该返回 15。
如何获得正确的身份证?
当我执行插入时TableAdapter
:
int pid = this.purchaseTableAdapter.Insert(supplierid, datetime, "",
totalprice, amountpaid);
它返回不正确的 id 1
,而它应该返回 15。
如何获得正确的身份证?
将执行模式属性设置为Scalar,然后您将获得 ID,否则会影响行。您不在查询向导中设置查询的属性属性窗口。
(图 28)
表适配器返回受影响的行数而不是 id。
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!