C# 数据表更新问题

C# 数据表更新问题,c#,sql,sql-server-2005,datatable,dataadapter,C#,Sql,Sql Server 2005,Datatable,Dataadapter,保存数千行并在执行某些操作后更新它们的最佳方法是什么 目前,我使用一个数据表,当插入完成时填充它 MyDataAdapter.Update(MyDataTable) 在对MyDataTable做了一些更改之后,我再次使用MyDataAdapter.Update(MyDataTable)方法 编辑: 我很抱歉没有提供更多信息 从XML文件创建的行可能多达200.000行。这些行将保存到数据库中。之后,每行都会有一些过程。我需要更新数据库中的每一行 我决定更新datatable并使用相同的data

保存数千行并在执行某些操作后更新它们的最佳方法是什么

目前,我使用一个数据表,当插入完成时填充它

MyDataAdapter.Update(MyDataTable)
在对MyDataTable做了一些更改之后,我再次使用MyDataAdapter.Update(MyDataTable)方法

编辑:

我很抱歉没有提供更多信息

从XML文件创建的行可能多达200.000行。这些行将保存到数据库中。之后,每行都会有一些过程。我需要更新数据库中的每一行

我决定更新datatable并使用相同的dataadapter来更新行,而不是逐行更新

这是我最好的一面


我认为可能有一种更明智的方法

如果我理解正确,您正在执行两个独立的操作:将行加载到数据库,然后更新这些行

如果插入的行来自另一个ADO.NET支持的数据源,则可以使用SqlBulkCopy批量插入行,这将比使用datatable更有效

一旦这些行在数据库中,我假设您最好执行SQLCommand来修改它们的值


如果您能提供更多关于您提出问题的内容和原因的详细信息,那么我们或许可以更好地为您的问题量身定制答案。

针对您的评论:

DataAdapter.Update()
将逐行执行Udate(以及插入/删除)。如果你有个人的改变,真的没有更快的方法。如果您有系统性的更改,例如
SET Price=Price+2,其中SelByDate<'1/1/2010'
您最好对数据库运行一个


但是,在执行之前,您可能应该担心事务和错误处理。

这没有什么直接的问题,您是否有特定的问题?实际上,问题在于更新它们。我保存它是好的。但我不想一个接一个地更新它们。插入的所有行都需要更新。我真的需要在更新它们之前保存它们。@Henk Holterman:但我使用的是DataAdapter.UpdateBatchSize属性,它可以提高性能一次。好的,设置为>1将更新一批行,开销更小。我不认为这会改变我答案的核心。@Henk Holterman,实际上我没有大规模更新。我将每行的一些列发送到Web服务,服务器为每个请求发送一个唯一的值,然后更新。不管怎么说,似乎没有更好的办法。