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服务,服务器为每个请求发送一个唯一的值,然后更新。不管怎么说,似乎没有更好的办法。