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

  次阅读 来源:互联网(转载协议) 2015-10-02 16:16 我要评论(0)

这篇文章介绍了DataAdapter执行批量更新的实例代码,有需要的朋友可以参考一下,希望对你有所帮助

在以前版本的 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 属性并执行更新。

复制代码 代码如下:

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 500 * 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, 15, "Address");

SqlParameter CityParam;

CityParam = new SqlParameter("@City", SqlDbType.VarChar, 15, "City");

SqlParameter RegionParam;

RegionParam = new SqlParameter("@Region", SqlDbType.VarChar, 15, "Region");

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...