2012-01-13 102 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

相關問題