最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
“返回多个结果集”和“MARS” 实例
时间:2011-03-21 编辑:简简单单 来源:一聚教程网
返回多个结果集:
一个简单的查询可以返回多个结果集,在一次查询中返回多个结果集可以提高查询的效率,还能避免同时占用多个数据库教程链接
2.使用mars:///
/// 返回多个结果集
///
///
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())
{
//.....绑定代码省略
}
}
}
ado.net提供了一个名为mars的新特性,在此版本之前数据库连接在有限的时间段内能且只能表示一个查询结果集。如果利用mars特性,就可以使用单一的数据库连接来表示多个查询结果集。
默认情况下mars特性是被关闭的,要开启该功能,只需要在数据库连接字符串中加上一个字段属性:multipleactiveresultsets=true
///
/// 使用mars (multiple active resultsets,多活动结果集)
///
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();
}
}
}
相关文章
- C#复制数组的两种方式及效率比较解读 10-24
- ASP.NET Identity用法解析 10-24
- ASP.NET MVC使用Identity增删改查用户介绍 10-24
- C语言中atoi函数模拟实现介绍 10-18
- .Net反向代理组件Yarp用法介绍 10-10
- .NET使用YARP通过编码方式配置域名转发实现反向代理教程 10-10