现在的位置: 首页 > 综合 > 正文

ADO.NET2.0-多活动结果集

2013年10月02日 ⁄ 综合 ⁄ 共 1567字 ⁄ 字号 评论关闭

上一篇博客讲了ADO.NET2.0的新特性之一的异步查询。这次我们讲一下ADO.NET2.0配合SQL Server2005的一个特性,多活动结果集。SQL默认是禁用多活动结果集的,必须要在连接字符串中显示的打开。上一篇博客中有讲解如何开启。请注意测试数据库使用的是SQL Server2005版本。运行截图如下:

后台代码如下,代码比较简单,请看注释。

 

    //多活动的结果集
    private void BindMARSData()
    
{
        
string QueryStr;
        SqlConnection Con 
= new SqlConnection(ConStr);
        SqlCommand CmdOreder, CmdDetail;
        SqlParameter CusID, OrderID;
        SqlDataReader RdrOrder, RdrDetail;

        Con.Open();
        QueryStr 
= "SELECT orderid,orderdate From Orders WHERE customerID= @CuID";
        CmdOreder 
= new SqlCommand(QueryStr,Con);
        CusID 
= CmdOreder.Parameters.Add("@CuID",SqlDbType.NChar,5);

        QueryStr 
= "SELECT productid,quantity,unitprice FROM [order details] WHERE orderid=@OrderID";
        CmdDetail 
= new SqlCommand(QueryStr,Con);
        OrderID 
= CmdDetail.Parameters.Add("@OrderID",SqlDbType.Int);

        CusID.Value 
= "ALFKI";
        Response.Write(
"ID为:"+CusID.Value);

        RdrOrder 
= CmdOreder.ExecuteReader();
        
while (RdrOrder.Read())
        
{
            Response.Write(RdrOrder[
"OrderID"]+"</br>");
            Response.Write(
"********************************</br>");
            
//以第一个DataReder读出的结果为参数,执行第二个SQL
            OrderID.Value = RdrOrder["OrderID"];
            RdrDetail 
= CmdDetail.ExecuteReader();
            
while (RdrDetail.Read())
            
{
                Response.Write(RdrDetail[
"unitprice"]+"</br>");
            }

            RdrDetail.Dispose();
        }


        RdrOrder.Dispose();
        Con.Dispose();
        CmdDetail.Dispose();
        CmdOreder.Dispose();
    }

 

抱歉!评论已关闭.