“返回多个结果集”和“MARS” 实例

返回多个结果集:

一个简单的查询可以返回多个结果集,在一次查询中返回多个结果集可以提高查询的效率,还能避免同时占用多个数据库教程链接

 



/// <summary>
/// 返回多个结果集
/// </summary>
/// <returns></returns>
public void gettworesultset()
{
sqlconnection conn = new sqlconnection(_connstr);
string sql = "select * from table_1;select * from table_2";
sqlcommand com = new sqlcommand(sql, conn);
using (conn)
{
conn.open();
sqldatareader dr = com.executereader();
while (dr.read())
{
//.....绑定代码省略
}

//转到下一个结果集读取(重点就在此)
dr.nextresult();

while (dr.read())
{
//.....绑定代码省略
}
}
}

2.使用mars:

ado.net提供了一个名为mars的新特性,在此版本之前数据库连接在有限的时间段内能且只能表示一个查询结果集。如果利用mars特性,就可以使用单一的数据库连接来表示多个查询结果集。

默认情况下mars特性是被关闭的,要开启该功能,只需要在数据库连接字符串中加上一个字段属性:multipleactiveresultsets=true

 


/// <summary>
/// 使用mars (multiple active resultsets,多活动结果集)
/// </summary>
public void getbymars()
{
//multipleactiveresultsets=true; 开启sql的mars
string connstr = @"multipleactiveresultsets=true;datasource=.sqlexpress;integrated security=true;";
connstr += @"attachdbfilename=|datadirectory|mydatabase.mdf;user instance=true";
sqlconnection conn = new sqlconnection(connstr);

string sqlcata = "select * from catagory";
sqlcommand cmdcata = new sqlcommand(sqlcata, conn);

string sql = "select * from movies where catagoryid = @catagoryid";
sqlcommand cmd = new sqlcommand(sql, conn);
cmd.parameters.add("@catagoryid", sqldbtype.int);

using (conn)
{
conn.open();
sqldatareader drcata = cmdcata.executereader();
while (drcata.read())
{
int cataid = int.parse(drcata["catagoryid"].tostring());

cmd.parameters["@catagoryid"].value = cataid;
sqldatareader dr = cmd.executereader();
while (dr.read())
{
//.....绑定代码省略
}
dr.close();
}
}
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, string
, int
, new
, 代码
using
存储过程返回结果集、mybatis返回map结果集、oracle游标返回结果集、mysql 函数返回结果集、oracle函数返回结果集,以便于您获取更多的相关知识。

时间: 2024-10-31 02:02:21

“返回多个结果集”和“MARS” 实例的相关文章

返回多个记录集的存储过程-ASP调用存储过程

存储过程|记录集 本文最先介绍的是返回记录集的存储过程.有时候,需要一个存储过程返回多个记录集,在ASP中,如何同时取得这些记录集呢?为了说明这一问题,在userinfo表中增加两个字段:usertel及usermail,并设定只有登录用户可以查看这两项内容. /*SP7*/CREATE PROCEDURE dbo.getUserInfo@userid int,@checklogin bitasset nocount onbeginif @userid is null or @checklogi

实现linq存储过程返回多条结果集

曾经被linq存储过程返回多个结果所困扰,今晚加班,问题解决,分享一下思路: linq存储过程默认生成的代码是ISingleResult的,也就是只能返回一条结果集,我们先动手脚,将其改 成IMultipleResults 的.实体类根据不同情况更改. linq存储过程更改前: [Function(Name="dbo.MeterTaskStat")] public ISingleResult<XXXX> MeterTaskStat ([Parameter(Name=&quo

mybatis-Mybatis调用存储过程返回多个结果集

问题描述 Mybatis调用存储过程返回多个结果集 存储过程返回两个结果集(游标). CREATE?OR?REPLACE?FUNCTION?t_user_func(id?varchar(20)) ??RETURNS?SETOF?refcursor?AS $BODY$ Declare code?refcursor; result?refcursor; BEGIN????? ??--返回错误码 ??OPEN?code?FOR?select?1010?as?code; ??RETURN?NEXT?co

存储过程的输出参数,返回值与结果集_MsSql

每个存储过程都有默认的返回值,默认值为0.下面我们分别看看在management studio中如何查看输出参数,返回值以及结果集,然后我们再在ASP.NET调用存储过程中如何获得输出参数,返回值以及结果集. 首先:在sql server management studio中查看输出参数,返回值以及结果集.本示例以Northwind数据库为例. 复制代码 代码如下: create proc Employee @Rowcount int=0 output as begin SELECT * FRO

sqlserver-请教各位大神,这个存储过程为什么返回两个结果集?非常感谢

问题描述 请教各位大神,这个存储过程为什么返回两个结果集?非常感谢 ALTER procedure [dbo].[Sp_QueryFeeInfo] @feedict varchar(100), @idnum varchar(20) as begin SET NOCOUNT ON; declare @sql nvarchar(4000) declare @ParameterDefinition nvarchar(4000); select @ParameterDefinition='@namePa

asp 返回多个记录集的存储过程

返回多个记录集的存储进程 本文最先介绍的是返回记录集的存储进程.有时候,需要一个存储进程返回多个记录集,在ASP中,如何同时取得这些记录集呢?为了说明这一问题,在USERINFO表中增加两个字段:USERTEL及USERMAIL,并设定只有登录用户可以查看这两项内容. /*SP7*/ CREATE PROCEDURE DBO.GETUSERINFO @USERID INT, @CHECKLOGIN BIT AS SET NOCOUNT ON BEGIN IF @USERID IS NULL OR

asp 同时返回参数和记录集的存储过程

同时返回参数和记录集的存储进程 有时候,我们需要存储进程同时返回参数和记录集,比如在利用存储进程分页时,要同时返回记录集以及数据总量等参数.以下给出一个进行分页处理的存储进程: /*SP6*/ CREATE PROCEDURE DBO.GETUSERLIST @IPAGECOUNT INT OUTPUT, --总页数 @IPAGE INT, --当前页号 @IPAGESIZE INT --每页记录数 AS SET NOCOUNT ON BEGIN --创建临时表 CREATE TABLE #T

存储过程的输出参数,返回值与结果集

每个存储过程都有默认的返回值,默认值为0.下面我们分别看看在management studio中如何查看输出参数,返回值以及结果集,然后我们再在ASP.NET调用存储过程中如何获得输出参数,返回值以及结果集. 首先:在sql server management studio中查看输出参数,返回值以及结果集.本示例以Northwind数据库为例. 复制代码 代码如下: create proc Employee @Rowcount int=0 output as begin SELECT * FRO

PHP实现Mysql数据库连接、查询、记录集操作代码实例

在PHP网站开发中,经常需要对Mysql数据库进行操作,大体上需要经过以下几个步骤:Mysql数据库链接.Mysql数据库查询.Mysql记录集操作等,如果每次都重复上述操作,不但繁琐,而且代码冗余度高,对此我整理了部分利用PHP实现Mysql数据库操作的代码,以函数的形式贴出,可根据自行需要添加其他功能或者整合成Mysql数据库类. Mysql数据库链接代码 123456789101112 function dbConnect($hostname,$username,$pass,$db_nam