数据读取器---处理多个结果集

有时想快点完成工作,同时使用两个或者多个查询,但又不想让应用程序的整体性能受到影响,如实例化多个命令或数据读取器对象,或者在代码中多次使用相同的对象,增大代码量。

数据读取器提供了这样一个方法:NextResult(),可以把读取器移到下一结果集。

示例:处理多个结果集

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace MultipleResults
{
    class Program
    {
        static void Main(string[] args)
        {
            string connString = @"
            server = .;
            integrated security =true;
            database =northwind";
            string sql1 = @"select companyname,contactname from customers where companyname like 'A%'";
            string sql2 = @"select firstname,lastname from employees";

            string sql = sql1 + sql2;
            SqlConnection conn = new SqlConnection(connString);

            try
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlDataReader rdr = cmd.ExecuteReader();
                do
                {
                    while (rdr.Read())
                    {
                        Console.WriteLine("{0} : {1}", rdr[0], rdr[1]);
                    }
                    Console.WriteLine("".PadLeft(60, '='));
                } while (rdr.NextResult());
                rdr.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error Occurred: " + e);
            }
            finally
            {
                conn.Close();
            }
            Console.ReadKey();
        }
    }
}

示例说明:

string sql=sql1 + sql2;

警告:某些DBMS要求在多个查询之间使用显式的分隔符,但SQL Server只要求在后续SELECT关键字的前面加上空白,上述字符串就符合这一要求。

posted on 2012-07-19 10:19  流星落  阅读(169)  评论(0编辑  收藏  举报

导航