专栏首页张善友的专栏重新审视SqlDataReader的使用

重新审视SqlDataReader的使用

      ADO.NET 1.x 利用SqlDataReader读取数据,针对每个结果集需要一个独立的连接。当然,你还必须管理这些连接并且要付出相应的内存和潜在的应用程序中的高度拥挤的瓶颈代价-特别是在数据集中的Web应用程序中。

      ADO.NET 2.的一个新特征多数据结果集(Multiple Active Result Sets,简称MARS)-它允许在单个连接上执行多重的数据库查询或存储过程。这样的结果是,你能够在单个连接上得到和管理多个、仅向前引用的、只读的结果集。目前实现这个功能的数据库只有Sql Server 2005。所以当我们针对Sql Sever 2005的时候,需要重新审视DataReader对象的使用。使用SqlServer 2005,可以在一个Command对象上同时打开多个DataReader,节约数据库联接所耗费的服务器资源,在实际开发中普遍存在的一种典型的从数据库中读写数据的情形是,你可以使用多重连接而现在只用一个连接就足够了。例如,如果你有一些来自于几个表中的数据-它们不能被联结到一个查询中,那么你就会有多重的连接-每个连接都有一个与之相关连的命令用于读取数据。同样,如果你正在向一个表写数据,那么你需要另外一个连接或连接集合-如果有多个表要被更新的话。

例如下面的代码

           //MultipleActiveResultSets=true打开联接
            string connstr = "server=(local);database=northwind;integrated security=true;MultipleActiveResultSets=true"; 

            SqlConnection conn = new SqlConnection(connstr);
            conn.Open();
            SqlCommand cmd1 = new SqlCommand("select * from customers", conn);
            SqlCommand cmd2 = new SqlCommand("select * from orders", conn);
            SqlDataReader rdr1 = cmd1.ExecuteReader();
           // next statement causes an error prior to SQL Server 2005
            SqlDataReader rdr2 = cmd2.ExecuteReader();
           // now you can reader from rdr1 and rdr2 at the same time.

              conn.Close();

Streamline your Data Connections by Moving to MARS, by Laurence Moroney, DevX.com >>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用VS2010的Database 项目模板统一管理数据库对象

    Visual Studio 2010 有一个数据库项目模板:Visual Studio Database Project(以下简称VSDP),VS 2003/2...

    张善友
  • IIS7 request routing 和load balancing module发布

    Application Request Router (ARR) 已经正式发布,并可以免费下载, 支持所有版本的 IIS7。Application Reques...

    张善友
  • 深入浅出事件流处理NEsper(三)

    首先介绍一下NESPER的大体结构,NEsper从内容上分为两块,NEsper的核心NEsper.dll和NEsper.IO.dll。 (1)NEsper的核...

    张善友
  • 媒体观察 | 500+金融政企数据库迁移投产,腾讯TDSQL加速企业 “核动力”变革

    近日,AWS首席布道师Jeff Barr在AWS官网发文宣布:亚马逊消费者业务永久去掉Oracle数据库。

    分布式数据库TDSQL
  • 从被动到主动,换个角度看DB

    近期做了次分享,主题是从被动到主动,换个角度看DB。之所以讲这个题目,是我个人经历多年对数据库的管理,也是经历了这个过程。随着自己对数据库的理解逐步深入,看待数...

    用户5548425
  • Skype for Business Server 2015 后端数据库配置镜像见证(mirroring witness)

    早期部署Skype for Business Server 2015后端数据库采用2台并使用镜像,未配置见证数据库,当遇到主数据库宕机时,需要手动迁移数据库,现...

    杨强生
  • Mysql语句的执行过程

    当你希望MySQL能够以更高的性能运行查询时,最好的办法是弄清楚MySQL是如何优化和执行查询。《高性能MySQL》

    大眼瞪小眼
  • 等保测评:SQLServer操作超时

    本文说的是等级保护1.0中SQLServer数据库操作超时的内容,实际在SQLServer中有很多种超时选项,很容易将其混为一谈,本文将尽力将之说清楚。

    FB客服
  • 医疗信息系统离“药”到病除只差一个...

    医疗行业对信息技术的依赖技术程度越来越高,IT基础架构是否稳健是医疗信息化发展的关键。大数据时代来临,各医疗机构数据量爆发,面对业务数据的日益剧增,传统数据库架...

    沃趣科技
  • 语义分割--ParseNet: Looking Wider to See Better

    ParseNet: Looking Wider to See Better ICLR2016 https://github.com/weiliu89/c...

    用户1148525

扫码关注云+社区

领取腾讯云代金券