使用 ADO.NET 的 NextResult 方法取得多个 Result Set

(本帖在版工的旧 Blog 中,发表日期为 2007/04/06)
(本帖有些 Hyperlink 是连到台湾的网站,若无法连结,麻烦请留言反应)

ADO.NET 1.x 开始,DataReader 就可以在单一次的查询动作中,「批次 (batch)」读取 T-SQL 语句以取回多个 table (数据表) 的数据,也就是一次能够回传多个「结果集 (Result Set)」,亦即所谓的「批次查询」。其中 DataReader NextResult 方法,是用来取得批次查询中,下一个 Result Set 的结果。例如若要从两个不同的 table 中捞取 column 值,分别绑定至两个 DropDownList 中,我们不需要浪费系统资源去建立两个 DataSource 对象,而可以直接用下列的 Code-behind
代码,仅透过单一次的数据库连结来达成:

using (SqlConnection conn = new SqlConnection(strConnString)) {
   conn.Open();
   
using (SqlCommand cmd = new SqlCommand()) 
{
    cmd.Connection 
=
 conn;

    // 利用分号「;」串连多句 SQL 语句,之后再一次丢进数据库去执行,达成「批次」读取或更新
    // 数据库的目的。此技巧亦适用于
INSERTUPDATEDELETE 的「批次」执行。
       
    cmd.CommandText 
= "SELECT 字段1,字段2 FROM 数据表1 ; SELECT * FROM 数据表2";

    
using (SqlDataReader dr = cmd.ExecuteReader()) 
{
      
while(dr.Read()) 
{
        
this.DropDownList1.Items.Add(dr.GetSqlString(0).ToString() + dr.GetSqlInt32(1
).ToString());
      }

      dr.NextResult();
      
while(dr.Read()) {
        
this.DropDownList2.Items.Add(dr.GetString(0+ dr.GetInt32(1
));
      }

    }

  }

}



读取时若还有其它的
Result Set,则 NextResult 方法会返回 True;因此我们也可透过返回的布尔值,搭配 While Do Until 等循环,依序再往下读取 Result Set。根据默认,DataReader 会由第一个 Result Set 开始读取。此外,若连结的为 SQL Server 数据库,从 ADO.NET 1.x 开始,DataReader 即支持以 GetSql 开头的方法来取得数据,其「性能 (performance)」会比Get
开头的方法要好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下启动与关闭oracle监听与实例

linux中启动oracle主要分两步:一个是启动监听器,一个是启动实例(一般都忘记了这一步),具体命令如下,提供给大家参考一下: 1:连接服务器 telnet ip 2:输入管理员用户和密码 user-name:oracle password:oracle 3:进入oracle根目录 …

同步和互斥

一、同步和互斥的基本概念 现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行,同时运行可能是真的同时运行(SMP架构中),也可能仅仅是操作系统提供的服务(通过将CPU时间分片,并将…

Mysql常用命令行大全

1、连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1、连接到本机上的MYSQL。 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空…

React开发(113):git 操作记录

git reflog 可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录 具体一个例子,假设有三个commit, git st: …

从printf谈可变参数函数的实现

作者:戎亚新 摘要:一直以来都觉得printf似乎是c语言库中功能最强大的函数之一,不仅因为它能格式化输出,更在于它的参数个数没有限制,要几个就给几个,来者不拒。printf这种对参数个数和参数类型的强大适应性…

JS之数组删除/添加项目方法splice

用法:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目 注:1:该方法会改变原始数组 语法:arrayObject.splice(index,howmany,item1,…..,itemX) 参数1:必需。整数,规定添加/删除项目的位置&…

Struts+DAO框架搭建完成!(源码)

今天做了这个StrutsDAO框架,可以说是又向SSH迈了一步。 做的过程中又发现了一些问题,但是在我和其他人的努力下一起解决了。这个问题是MyEclipse的Tomcat的启动问题。(已经解决并发帖解答了) 好了,下面切入正题&…

HTTP1.1中CHUNKED编码解析(转载)

HTTP1.1中CHUNKED编码解析 一般HTTP通信时,会使用Content-Length头信息性来通知用户代理(通常意义上是浏览器)服务器发送的文档内容长度,该头信息定义于HTTP1.0协议RFC 1945 10.4章节中。浏览器接收到此头信息后,接受…

解析可变参数函数的实现原理(printf,scanf)

From: http://hi.baidu.com/huifeng00/blog/item/085e8bd198f46ed3a8ec9a0b.html 学习C的语言的时候,肯定接触到标准输出和标准输入函数。 这个函数给人的感觉很强大,因为它很另类,就是这个函数的参数是可变的。 下面是一个自己编写的可变…

花生葫芦球 健身新运动

国民健康天后张淳淳老师率先再将风靡欧美的“花生葫芦球(FITNESS BALL)”,推广给日、港、台的朋友,同时结合国内外体适能教练与专家,研发出一套减压、塑身运动课程,引领全民健康塑身运动。 花生葫芦球 健身新运动美大腿后健肌群伸…

JS之数组元素排序方法sort

作用:sort() 方法用于对数组的元素进行排序 语法:arrayObject.sort(sortby) 参数:可选。规定排序顺序。必须是函数 返回值:对数组的引用。请注意,数组在原数组上进行排序,不生成副本 注意1:…

js中自己实现bind函数的方式

前言 最近由于工作比较忙,好久都没时间静下心来研究一些东西了。今天在研究 call 和 apply 的区别的时候,看到 github 上面的一篇文章,看完以后,感觉启发很大。 文章链接为 https://github.com/lin-xin/blog/issues/7 &#xff…

我的C语言可变参数的实现

实现环境&#xff1a;Fedora12 gcc 任务&#xff1a;用C语言实现一个参数可变的函数&#xff0c;以方便输出。 源代码如下&#xff1a; #include <stdio.h>#include <stdarg.h>#include <string.h>int sum(int data, ...){int i data, s 0;va_list vl;…

Leetcode刷题(1)两数之和

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中…

使用WEB方式更改域用户帐户密码

使用WEB方式更改域用户帐户密码 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1、这个只是域帐户密码的一种更改方式&#xff0c;正规来说&#xff0c;域用户帐户的密码更改方式可以有6种。今天介绍给大家的只是其中一种&…

一个路径下挂载(匹配)多个子组件

效果图如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>Document</title><script type"text/javascript" src"./lib/vue-2.4.0.js"></script><scrip…

JS之字符串截取函数substr

作用&#xff1a;substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符 语法&#xff1a;stringObject.substr(start,length) 参数1&#xff1a;必需。要抽取的子串的起始下标。必须是数值。如果是负数&#xff0c;那么该参数声明从字符串的尾部开始算起的位置。…

面向对象中的修饰关键词

final:用来修饰类和方法&#xff0c;修饰类的时候表示这个类是终极类&#xff0c;不能被其他类继承&#xff0c;修饰方法的时候&#xff0c;表示这个方法是终极方法&#xff0c;不能被子类重写。 static:用来修饰属性和方法&#xff0c;修饰属性的时候表示这个属性是静态属性&a…