多个活动的结果集(MARS)

 

多个活动的结果集(MARS)

多个活动结果集 (MARS) 是用于 SQL Server 2005 的一项新功能,允许在单个连接上执行多个批处理。要在以前版本的 SQL Server 上使用 SqlDataReader 对象访问多个结果集,必须对每个 SqlCommand 对象使用独立的 SqlConnection 对象。但是,如果对 SQL Server 2005 启用了 MARS,使用的每个命令对象将向该连接添加一个会话。

 

小例:(sql语句 自己构建)

在连接字符串中启用和禁用 MARS,启用:MultipleActiveResultSets=True,

不然会报错:已有打开的与此命令相关联的 DataReader,必须首先将它关闭。

 

 

---------------MARS.aspx.cs---------------------------------------------

 

public partial class MARS : System.Web.UI.Page

{

    SqlConnection DBCon;

    protected void Page_Load(object sender, EventArgs e)

    {

        //在连接字符串中启用和禁用 MARS,启用:MultipleActiveResultSets=True,不然会报错

        using (DBCon = new SqlConnection("uid=sa;password=123456;database=study;server=.;MultipleActiveResultSets=True"))

        {

            SqlCommand command = new SqlCommand("select book_Id,book_Author from book", DBCon);

            DBCon.Open();

            using (SqlDataReader reader = command.ExecuteReader())

            {

                gvOrders.DataSource = reader;

                gvOrders.DataBind();

            }

        }

    }

 

    protected void gvOrders_RowDataBound(object sender, GridViewRowEventArgs e)

    {

        IDataRecord record = e.Row.DataItem as IDataRecord;

        Label lblOrderDetail = e.Row.FindControl("lblOrderDetail") as Label;

 

        if ((record == null) || (lblOrderDetail == null))

            return;

        SqlCommand command = new SqlCommand("select book_Name from book where book_Id=" + Convert.ToInt32(record["book_Id"]), DBCon);

        using (SqlDataReader readerDetail = command.ExecuteReader())

        {

            while (readerDetail.Read())

            {

                lblOrderDetail.Text += readerDetail[0].ToString() + "<br/>";

            }

        }

 

    }

}

 

-----------------------MARS.aspx---------------------------------------------

 

<asp:GridView ID="gvOrders" runat="server" AutoGenerateColumns="false" OnRowDataBound="gvOrders_RowDataBound">

                <Columns>

                    <asp:BoundField HeaderText="编号" DataField="book_Id" />

                    <asp:BoundField HeaderText="作者" DataField="book_Author" />

                    <asp:TemplateField>

                        <HeaderTemplate>

                            order Detail(名字)

                        </HeaderTemplate>

                        <ItemTemplate>

                            <asp:Label ID="lblOrderDetail" runat="server"></asp:Label>

                        </ItemTemplate>

                    </asp:TemplateField>

                </Columns>

            </asp:GridView>

 

 

----------------------------------------------------------------

线程安全性:MARS 操作不是线程安全的。

更过信息 请参考MSDN

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值