微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ADO.NET中的“返回多个结果集”和“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 =  sqlCommand(sql,conn);
        using (conn)
        {
            conn.open();
            sqlDataReader dr = com.ExecuteReader();
            while (dr.Read())
            {
                //.....绑定代码省略
            }

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

                        }
        }
    }

2.使用MARS:

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

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

 使用MARS (Multiple Active Resultsets,多活动结果集)
    </summary>
     GetByMARS()
    {
        MultipleActiveResultsets=True; 开启sql的MARS
        string connstr = @"MultipleActiveResultsets=True;DataSource=.\sqlExpress;Integrated Security=True;;
        connstr += AttachDBFileName=|DataDirectory|Mydatabase.mdf;User Instance=True;
        sqlConnection conn =  sqlConnection(connstr);

        string sqlCata = select * from Catagory;
        sqlCommand cmdCata =  sqlCommand(sqlCata,conn);

        select * from Movies where CatagoryID = @CatagoryID;
        sqlCommand cmd = arameters.Add(@CatagoryID,sqlDbType.Int);

         (conn)
        {
            conn.open();
            sqlDataReader drCata = cmdCata.ExecuteReader();
             (drCata.Read())
            {
                int cataid = int.Parse(drCata[CatagoryID].ToString());

                cmd.Parameters["].Value = cataid;
                sqlDataReader dr = cmd.ExecuteReader();
                 (dr.Read())
                {
                                    }
                dr.Close();
            }
        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐