使用SqlCommandBuilder后,Insert、Delete和Update命令为null

本文关键字:Update 命令 null Delete SqlCommandBuilder Insert 使用 | 更新日期: 2023-09-27 18:20:07

在sqlcommandbuilder生成插入命令后,我需要修改插入命令,并且我需要这样做才能在插入后获得scope_identity。部分代码是:

adapterClients = new SqlDataAdapter (cmdClients, connString);
SqlCommandBuilder cmdBuilder = new SqlCommandBuilder (adapterClients);
adapterClients.Fill (dataSet, "Clients");
adapterClients.InsertCommand.CommandText += "; select ClientID = SCOPE_IDENTITY()";
adapterClients.InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord;

我在adapterClients.InsertCommand.上得到一个null异常

使用SqlCommandBuilder后,Insert、Delete和Update命令为null

自动生成的insert命令将是生成器的一部分,而不是适配器。因此,您需要使用以下命令来检索插入命令:

cmdBuilder.GetInsertCommand()

因此,根据您要做的具体操作,您可以使用以下命令(1)将生成的insert命令设置为适配器,然后(2)修改生成的insertcommand以包括scope_identity的检索。

adapterClients.InsertCommand = cmdBuilder.GetInsertCommand();
adapterClients.InsertCommand.CommandText += "; select ClientID = SCOPE_IDENTITY()";