• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > DataAdapter执行批量更新的实例代码

DataAdapter执行批量更新的实例代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了dataadapter,oracledataadapter,dataadapter对象,dataadapter.fill,dataadapter.update等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在以前版本的 ADO.NET 中,使用 DataSet 中的更改来更新数据库时,DataAdapter 的 Update 方法每次更新数据库的一行。因为该方法循环访问指定 DataTable 中的行,所以,会检查每个 DataRow,确定是否已修改。如果该行已修改,将根据该行的 RowState 属性值调用相应的 UpdateCommand、InsertCommand 或 DeleteCommand。每一次行更新都涉及网络与数据库之间的双向数据传输。
    在 ADO.NET 2.0 中,DataAdapter 公开了 UpdateBatchSize 属性。将 UpdateBatchSize 设置为正整数值将使对数据库的更新以指定大小的批次进行发送。例如,如果将 UpdateBatchSize 设置为 10,会将 10 个独立的语句组合在一起并作为一批提交。将 UpdateBatchSize 设置为 0 将导致 DataAdapter 使用服务器可以处理的最大批次的大小。如果将其设置为 1,则禁用批量更新,因为此时每次发送一行。
    执行非常大的批次可能会降低性能。因此,在实现应用程序之前,应测试最佳的批次大小设置。
    使用 UpdateBatchSize 属性
    启用了批量更新后,DataAdapter 的 UpdateCommand、InsertCommand 和 DeleteCommand 的 UpdatedRowSource 属性值应设置为 None 或 OutputParameters。在执行批量更新时,命令的 FirstReturnedRecord 或 Both 的 UpdatedRowSource 属性值无效。
    下面的过程演示如何使用 UpdateBatchSize 属性。该过程采用两个参数,一个 DataSet 对象,其中包含代表 PRoduction.ProductCategory 表中的 ProductCategoryID 和 Name 字段的列,一个代表批次大小的整数(批次中的行数)。该代码创建一个新的 SqlDataAdapter 对象,设置其 UpdateCommand、InsertCommand 和 DeleteCommand 属性。该代码假定 DataSet 对象已修改了行。它设置 UpdateBatchSize 属性并执行更新。

 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, 15, "Address");
    SqlParameter CityParam;
    CityParam = new SqlParameter("@City", SqlDbType.VarChar, 15, "City");
    SqlParameter RegionParam;
    RegionParam = new SqlParameter("@Region", SqlDbType.VarChar, 15, "Region");
    SqlParameter CountryParam;
    CountryParam = new SqlParameter("@Country",
    SqlDbType.VarChar, 15, "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 command will be used to retrieve all employee
    // information from the Northwind database and the Update command
    // 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"] = "4445 W 77th Street, Suite 140";
    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 = 100;
    // 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>";
    }
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详细说明asp.net中datareader 和 dataset 的区别
  • DataAdapter执行批量更新的实例代码
  • 使用DataAdapter填充多个表(利用DataRelation)的实例代码
  • 用DataReader还是DataSet?

相关文章

  • 2017-05-11ASP.NET程序中用Repeater实现分页
  • 2017-05-11asp.net(C#) 动态添加非ASP的标准html控件(如添加Script标签)
  • 2017-05-11一步步做自己的webinstall安装包
  • 2017-05-11Discuz!NT数据库读写分离方案详解
  • 2017-05-11ASP.NET2.0新特性概述
  • 2017-05-11详解ASP.NET配置文件Web.config
  • 2017-05-11asp.net C#生成和解析二维码的实例代码
  • 2017-05-11ASP.NET MVC 4 中的JSON数据交互的方法
  • 2017-05-11ASP.Net中利用CSS实现多界面的两种方法
  • 2017-05-11asp.net中不能在DropDownList中选择多个项 原因分析及解决方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net微信开发(自定义会话管理)
    • ASP.NET MVC中的AJAX应用
    • ASP.NET下母版页和内容页中的事件发生顺序整理
    • IIS实现反向代理时Cookie域的设置方法
    • 浅谈ASP.NET中MVC 4 的JS/CSS打包压缩功能
    • Asp.net+jquery+.ashx文件实现分页思路
    • ASP.NET数据绑定之DataList控件
    • asp.net 生成曲线图实现代码
    • asp.net下中文验证码,免费开源代码
    • WinForm中如何预览Office文件

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有