我遇到这种情况,我需要在sqlcommandbuilder生成后修改insert命令,我需要这样做才能在插入后获取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异常。
答案 0 :(得分:2)
自动生成的insert命令将是构建器的一部分,而不是适配器。因此,您需要使用以下命令来检索插入命令:
cmdBuilder.GetInsertCommand()
因此,根据您要完成的操作,您可以使用以下方法(1)将生成的insert命令设置为适配器,然后(2)修改生成的insert命令以包括scope_identity的检索。
adapterClients.InsertCommand = cmdBuilder.GetInsertCommand();
adapterClients.InsertCommand.CommandText += "; select ClientID = SCOPE_IDENTITY()";