2012-01-13 69 views
2

我有这种情况需要在sqlcommandbuilder生成后修改插入命令,我需要这样做才能在插入后得到scope_identity。部分代码是:使用SqlCommandBuilder后插入,删除和更新命令为空

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异常。

回答

2

自动生成的insert命令将成为构建器的一部分,而不是适配器。所以,你将要使用的后续检索INSERT命令:

cmdBuilder.GetInsertCommand() 

所以,这依赖于你正在尝试做的,你可以使用下面的方法(1)设置生成的INSERT命令到适配器然后(2)修改生成的插入命令以包含scope_identity的检索。

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

谢谢!!!是的,我环顾四周,发现了类似的东西:)。 'adapterClients.InsertCommand = cmdBuilder.GetInsertCommand().Clone();' – user990692 2012-01-14 20:13:03