重新认识NextResult()方法
最近使用数据访问类时遇到这样一种需求:在执行一个存储过程时希望返回两个结果集.按以往的做法,必定是写成两个存储过程来实现,这样数据库往返两趟,牺牲了一点效率.由于数据量大,在使用IDataReader接口来读取结果集时,发现有NextResult方法,很少用它.于是看了一下MSDN,有这样一段介绍:"当读取批处理 SQL 语句的结果时,使数据读取器前进到下一个结果。用于处理多个结果,这些结果可通过执行批处理 SQL 语句获得。默认情况下,数据读取器定位在第一项结果上。"根据这个说法,尝试在一个存储过程连续执行两个查询,然后在访问数据的方法中,第一次使用 IDataReader.Read()方法作循环,读取出前一个结果集来,然后在不断连接的情况下,使用IDatareader.NextResult()判断一下是否有另一个结果集,再继续使用IDataReader.Read()作循环,完整取出后一个结果集无误,由此,可证明,在一个存储过程里执行多个查询语句,其结果集均能用这种办法取出,由此减少了数据连接的次数,而且可以在数据访问类中执行更为复杂的操作,例如借用前一个方法返回的多个结果执行批量操作而不用重新取得数据源,也能满足有连环数据操作的需求.