DataReader 处理多个结果集--NextResult的用法

简介:
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>

仔细查看您的数据库代码,看是否存在多次进入数据库的请求路径。每个这样的往返都会降低应用程序可以提供的每秒请求数量。通过在一个数据库请求中返回多个结果集,可以节省与数据库进行通信所需的总时间长度。同时因为减少了数据库服务器管理请求的工作,还会使得系统伸缩性更强。
简单示例如下:

一、返回多个数据集的存储过程
CREATE PROC Proc ---Multiple Resultsets
AS
SELECT * FROM Users
SELECT * FROM Users WHERE State = 'CA'
GO

二、取多个数据集的代码
   String ConnString = "User ID=sa;password=sa;Initial Catalog=pubs;Data Source=myServer";
   SqlConnection Connection = new SqlConnection(myConnString);
   SqlCommand Command = new SqlCommand();
   SqlDataReader reader ;

   Command.CommandType = CommandType.StoredProcedure;
   Command.Connection = Connection;
   Command.CommandText = "Proc";
   int RecordCount=0;
   try
   {
    Connection.Open();
    reader = command.ExecuteReader();
    int RecordCount=0;

    // read the data from that resultset
    while (reader.Read())
    {
     RecordCount = RecordCount + 1;
    }
    Response.Write("Total number of Users:" + RecordCount.ToString());

    // read the next resultset
    reader.NextResult();
    RecordCount = 0;

    // read the data from that second resultset
    while (reader.Read())
    {
     RecordCount = RecordCount + 1;
    }
    Response.Write("Total number of Users from California:" + RecordCount.ToString());
   }
   catch (Exception ex)
   {
    MessageBox.Show(ex.ToString());
   }
   finally
   {
    Connection.Close();
   }

本文转自 netcorner 博客园博客,原文链接: http://www.cnblogs.com/netcorner/archive/2008/05/06/2912156.html ,如需转载请自行联系原作者

相关文章
|
8月前
|
SQL 数据库
拷贝的表的SQL语句 SELECT INTO 和 INSERT INTO SELECT的用法与区别
语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1
99 0
|
Oracle Java 关系型数据库
JDBC获取数据库列名-关于 ResultSet 对象中列的类型和属性信息
JDBC获取数据库列名-关于 ResultSet 对象中列的类型和属性信息
144 0
|
SQL 数据挖掘 Linux
awk实现类sql的join操作
awk实现类sql的join操作
127 0
|
SQL 存储 Java
mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集
mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集 需求: 1.直接执行前端传来的任何sql语句,parameterType="String", 2.对于任何sql语句,其返回值类型无法用resultMap在xml文件里配置或者返回具体的bean类型,因此设置resultType="java.util.Map",但是Map并不保证存入取出顺序一致, 因此设置resultType="java.util.LinkedHashMap",为保证查询的字段值有序(存入与取出顺序一致)所以采用LinkedHashMap。
2246 0
|
SQL 存储 Java
MyBatis学习笔记】10:#和$,sql元素,resultMap的结构/构造器,存储结果集
MyBatis学习笔记】10:#和$,sql元素,resultMap的结构/构造器,存储结果集 在MyBatis的SQL中使用#{}和${}都会被视为特殊字符串来处理。前者是设置了参数,MyBatis会将参数设置到语句中(默认是PreparedStatement)。
1695 0
|
SQL Java 数据库连接
Hibernate中执行NativeSQL语句查询返回自定义类型的POJO实例的List(多表查询)
Hibernate中定义了hql的概念,简单地说就是,为java的码农提供了一套类似于sql的语法,但是数据表名变成了PO名,数据字段名变成了PO中属性成员名,并把这种语法称为hql。优点就是:hql看上去是面向对象的,码农不需要知道数据库中数据表的结构,只需要依据PO编写面向对象的数据库增删改查的语句。
4113 0