ASP.NET Tutorial/ADO.net Database/SqlAsyncResult

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Asynchronous command processing using the callback approach (C#)

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Configuration" %>
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection DBCon;
        SqlCommand Command = new SqlCommand();
        SqlAsyncResult ASyncResult;
        DBCon = new SqlConnection();
        Command = new SqlCommand();
        DBCon.ConnectionString = ConfigurationManager.ConnectionStrings["DSN_NorthWind"].ConnectionString;
        Command.rumandText = 
                "SELECT TOP 5 Customers.rupanyName, Customers.ContactName, " +
                " Orders.OrderID, Orders.OrderDate, " +
                " Orders.RequiredDate, Orders.ShippedDate " +
                " FROM Orders, Customers " +
                " WHERE Orders.CustomerID = Customers.CustomerID " +
                " ORDER BY Customers.rupanyName, Customers.ContactName ";
        Command.rumandType = CommandType.Text;
        Command.Connection = DBCon;
        DBCon.Open();
        AsyncResult = Command.BeginExecuteReader(new AsyncCallback(CBMethod), 
                                        CommandBehavior.CloseConnection);
    }
    public void CBMethod(SQLAsyncResult ar)
    {
        SqlDataReader OrdersReader;
        OrdersReader = ar.EndExecuteReader(ar);
        gvOrders.DataSource = OrdersReader;
        gvOrders.DataBind();
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>The Call Back Approach</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView ID="gvOrders" Width="100%" AutoGenerateColumns="False"         
        Runat="server">
        <Columns>
        <asp:BoundField HeaderText="Company Name" 
            DataField="CompanyName"></asp:BoundField>
        <asp:BoundField HeaderText="Contact Name" 
            DataField="ContactName"></asp:BoundField>
        <asp:BoundField HeaderText="Order Date" DataField="orderdate" 
            DataFormatString="{0:d}"></asp:BoundField>
        <asp:BoundField HeaderText="Required Date" DataField="requireddate" 
            DataFormatString="{0:d}"></asp:BoundField>
        <asp:BoundField HeaderText="Shipped Date" DataField="shippeddate" 
            DataFormatString="{0:d}"></asp:BoundField>
        </Columns>
    </asp:GridView> 
    </div>
    </form>
</body>
</html>
File: Web.config
<configuration>
  <connectionStrings>
        <add name="DSN_Northwind" 
             connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"
             providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>


Asynchronous command processing using the callback approach (VB)

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Configuration" %>
<script runat="server">
    Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
        Dim DBCon As SqlConnection
        Dim Command As SqlCommand = New SqlCommand()
        Dim ASyncResult As SqlAsyncResult
        DBCon = New SqlConnection()
        Command = New SqlCommand()
        DBCon.ConnectionString = _
        ConfigurationManager.ConnectionStrings("DSN_NorthWind").ConnectionString
        Command.rumandText = _
                "SELECT TOP 5 Customers.rupanyName, Customers.ContactName, " & _
                " Orders.OrderID, Orders.OrderDate, " & _
                " Orders.RequiredDate, Orders.ShippedDate " & _
                " FROM Orders, Customers " & _
                " WHERE Orders.CustomerID = Customers.CustomerID " & _
                " ORDER BY Customers.rupanyName, Customers.ContactName "
        Command.rumandType = CommandType.Text
        Command.Connection = DBCon
        DBCon.Open()
        AsyncResult = Command.BeginExecuteReader(New _
           AsyncCallback(AddressOf CBMethod), CommandBehavior.CloseConnection)
    End Sub
    Public Sub CBMethod(ByVal ar As SQLAsyncResult)
        Dim OrdersReader As SqlDataReader
        OrdersReader = ar.EndExecuteReader(ar)
        gvOrders.DataSource = OrdersReader
        gvOrders.DataBind()
    End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>The Call Back Approach</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView ID="gvOrders" Width="100%" AutoGenerateColumns="False"         
        Runat="server">
        <Columns>
        <asp:BoundField HeaderText="Company Name" 
            DataField="CompanyName"></asp:BoundField>
        <asp:BoundField HeaderText="Contact Name" 
            DataField="ContactName"></asp:BoundField>
        <asp:BoundField HeaderText="Order Date" DataField="orderdate" 
            DataFormatString="{0:d}"></asp:BoundField>
        <asp:BoundField HeaderText="Required Date" DataField="requireddate" 
            DataFormatString="{0:d}"></asp:BoundField>
        <asp:BoundField HeaderText="Shipped Date" DataField="shippeddate" 
            DataFormatString="{0:d}"></asp:BoundField>
        </Columns>
    </asp:GridView> 
    </div>
    </form>
</body>
</html>
File: Web.config
<configuration>
  <connectionStrings>
        <add name="DSN_Northwind" 
             connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True"
             providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>