知识大全 使用DataAdapter执行批量更新

Posted 属性

篇首语:没有激流就称不上勇进,没有山峰则谈不上攀登。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用DataAdapter执行批量更新相关的知识,希望对你有一定的参考价值。

使用DataAdapter执行批量更新  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在以前版本的 ADO NET 中 使用 DataSet 中的更改来更新数据库时 DataAdapter 的 Update 方法每次更新数据库的一行 因为该方法循环访问指定 DataTable 中的行 所以 会检查每个 DataRow 确定是否已修改 如果该行已修改 将根据该行的 RowState 属性值调用相应的 UpdateCommand InsertCommand 或 DeleteCommand 每一次行更新都涉及网络与数据库之间的双向数据传输

  在ADO NET 中 DataAdapter 公开了UpdateBatchSize 属性 将 UpdateBatchSize 设置为正整数值将使对数据库的更新以指定大小的批次进行发送 例如 如果将 UpdateBatchSize 设置为 会将 个独立的语句组合在一起并作为一批提交 将 UpdateBatchSize 设置为 将导致 DataAdapter 使用服务器可以处理的最大批次的大小 如果将其设置为 则禁用批量更新 因为此时每次发送一行

  执行非常大的批次可能会降低性能 因此 在实现应用程序之前 应测试最佳的批次大小设置

  使用 UpdateBatchSize 属性

  启用了批量更新后 DataAdapter 的 UpdateCommand InsertCommand 和 DeleteCommand 的 UpdatedRowSource 属性值应设置为 None 或 OutputParameters 在执行批量更新时 命令的FirstReturnedRecord 或 Both 的UpdatedRowSource 属性值无效

  下面的过程演示如何使用 UpdateBatchSize 属性 该过程采用两个参数 一个 DataSet 对象 其中包含代表 Production ProductCategory 表中的ProductCategoryID 和 Name 字段的列 一个代表批次大小的整数(批次中的行数) 该代码创建一个新的 SqlDataAdapter 对象 设置其 UpdateCommand InsertCommand 和 DeleteCommand 属性 该代码假定 DataSet 对象已修改了行 它设置 UpdateBatchSize 属性并执行更新

  protected void btnUpdateAddress_Click(object sender EventArgs e)

  

  SqlDataAdapter EmpAdapter = new SqlDataAdapter();

  DataTable EmpDT = new DataTable();

  SqlConnection DBConSelect = new SqlConnection();

  SqlConnection DBConUpdate = new SqlConnection();

  SqlCommand SelectCommand = new SqlCommand();

  SqlCommand UpdateCommand = new SqlCommand();

  // Using different connection objects for select and updates from the

  // Northwind database

  DBConSelect ConnectionString =

  ConfigurationManager ConnectionStrings[ DSN_NorthWind ] ConnectionString;

  DBConUpdate ConnectionString =

  ConfigurationManager ConnectionStrings[ DSN_NorthWind ] ConnectionString;

  // Reading all records from the Employees table

  SelectCommand CommandText = SELECT top * FROM EMPLOYEES ;

  SelectCommand CommandType = CommandType Text;

  SelectCommand Connection = DBConSelect;

  UpdateCommand CommandText = UPDATE EMPLOYEES SET Address=@Address +

   City=@City Region=@Region Country=@Country ;

  UpdateCommand CommandType = CommandType Text;

  UpdateCommand Connection = DBConUpdate;

  SqlParameter AddressParam;

  AddressParam = new SqlParameter( @Address

  SqlDbType VarChar Address );

  SqlParameter CityParam;

  CityParam = new SqlParameter( @City SqlDbType VarChar City );

  SqlParameter RegionParam;

  RegionParam = new SqlParameter( @Region SqlDbType VarChar Region );

  SqlParameter CountryParam;

  CountryParam = new SqlParameter( @Country

  SqlDbType VarChar Country );

  UpdateCommand Parameters Add(AddressParam);

  UpdateCommand Parameters Add(CityParam);

  UpdateCommand Parameters Add(RegionParam);

  UpdateCommand Parameters Add(CountryParam);

  // Setting up Data Adapter with the Select and Update Commands

  // The Select mand will be used to retrieve all employee

  // information from the Northwind database and the Update mand

  // will be used to save changes back to the database

  EmpAdapter SelectCommand = SelectCommand;

  EmpAdapter UpdateCommand = UpdateCommand;

  EmpAdapter Fill(EmpDT);

  DBConSelect Close();

  // Looping through all employee records and assigning them the new

  // address

  foreach (DataRow DR in EmpDT Rows)

  

  DR[ Address ] = W th Street Suite ;

  DR[ City ] = Edina ;

  DR[ Region ] = Minnesota ;

  DR[ Country ] = USA ;

  

  // Adding an event handler to listen to the RowUpdated event

  // This event will will fire after each batch is executed

  EmpAdapter RowUpdated +=  new SqlRowUpdatedEventHandler(OnRowUpdated);

  lblCounter Text = ;

  EmpAdapter UpdateBatchSize = ;

  // It is important to set this property for batch processing of

  // updated records since batch updates are incapable of

  // updating the source with changes from the database

  UpdateCommand UpdatedRowSource = UpdateRowSource None;

  try

  

  DBConUpdate Open();

  EmpAdapter Update(EmpDT);

  

  catch (Exception ex)

  

  lblCounter Text += ex Message + <Br> ;

  

  finally

  

  if (DBConUpdate State == ConnectionState Open)

  

  DBConUpdate Close();

  

  

  

  private void OnRowUpdated(object sender SqlRowUpdatedEventArgs args)

  

  lblCounter Text += Batch is processed till row number = +

  args RowCount ToString() + <br> ;

cha138/Article/program/net/201311/12203

相关参考

知识大全 ADO.NET批量更新操作

ADO.NET批量更新操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 Hibernate批量更新与删除实例浅析

Hibernate批量更新与删除实例浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在我们的

知识大全 Oracle中的Merge函数(批量更新/删除)

Oracle中的Merge函数(批量更新/删除)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ADO.Net实现Oracle大批量数据的更新优化

ADO.Net实现Oracle大批量数据的更新优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 sql server自动生成批量执行SQL脚本的批处理

sqlserver自动生成批量执行SQL脚本的批处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 DataAdapter对象

DataAdapter对象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  DataAdapter

知识大全 溶酶体执行功能时伴随其膜组分的更新这句话是什么意思

溶酶体执行功能时伴随其膜组分的更新这句话是什么意思溶酶体中的酶通过小泡以胞吐的方式释放出来,需要小泡膜和溶酶体膜的融合中,导致膜成分的更新“溶酶体和高尔基体在行使功能时可能伴随膜组分的更新”这句话对吗

知识大全 iphne5下载游戏时显示“需要执行ios更新所需操作要求具有最新版本ios”怎么解决

iphne5下载游戏时显示“需要执行ios更新所需操作要求具有最新版本ios”怎么解决手机连接itunes,更新到IOS最新版就可以了出现需要执行iO更新所需操作要求具有最新版本的iOS怎么解决如果您

知识大全 苹果4S6.0系统在App store里下载东西提示需要执行ios系统更新,怎么解决

苹果4S6.0系统在Appstore里下载东西提示需要执行ios系统更新,怎么解决  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容

安全审核是用一套方法制度来定期检讨下列哪一项的执行状况及成效,并评估是否需要作出修改或更新?

安全审核是用一套方法制度来定期检讨下列哪一项的执行状况及成效,并评估是否需要作出修改或更新?。A.安全计划B.安全委员会职能C.安全部门职务【参考答案】A[拓展知识]安全巡查、意外调查及安全审核都能就