数据读取器---处理多个结果集
有时想快点完成工作,同时使用两个或者多个查询,但又不想让应用程序的整体性能受到影响,如实例化多个命令或数据读取器对象,或者在代码中多次使用相同的对象,增大代码量。
数据读取器提供了这样一个方法: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关键字的前面加上空白,上述字符串就符合这一要求。