【问题标题】:Insert, Delete and Update commands are null after using SqlCommandBuilder使用 SqlCommandBuilder 后插入、删除和更新命令为空
【发布时间】:2012-01-13 02:52:35
【问题描述】:

我有这种情况,需要在sqlcommandbuilder生成后修改insert命令,而我需要这样做才能得到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 上得到一个空异常。

【问题讨论】:

    标签: c# sql sql-server c#-4.0 ado.net


    【解决方案1】:

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

    cmdBuilder.GetInsertCommand()
    

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

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

    【讨论】:

    • 谢谢!!!。是的,我环顾四周,发现了类似的东西:)。 adapterClients.InsertCommand = cmdBuilder.GetInsertCommand ().Clone ();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多