Performing Batch Updates : DataAdapter « ADO.net Database « ASP.NET Tutorial






<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Web.Configuration" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">    
    private SqlDataAdapter dad;
    private DataTable dtblProducts;

    void Page_Load()
    {
        string connectionString = WebConfigurationManager.ConnectionStrings["Products"].ConnectionString;
        SqlConnection con = new SqlConnection(connectionString);

        dad = new SqlDataAdapter("SELECT Id,Title,Director FROM Products", con);

        SqlCommandBuilder builder = new SqlCommandBuilder(dad);

        dtblProducts = new DataTable();
        dad.Fill(dtblProducts);

        rptProducts.DataSource = dtblProducts;
        rptProducts.DataBind();
    }

    protected void lnkUpdate_Click(object sender, EventArgs e)
    {
        for (int i=0; i < rptProducts.Items.Count;i++)
        {
            RepeaterItem item = rptProducts.Items[i];
            TextBox txtTitle = (TextBox)item.FindControl("txtTitle");
            TextBox txtDirector = (TextBox)item.FindControl("txtDirector");
            if (dtblProducts.Rows[i]["Title"] != txtTitle.Text)
                dtblProducts.Rows[i]["Title"] = txtTitle.Text;
            if (dtblProducts.Rows[i]["Director"] != txtDirector.Text)
                dtblProducts.Rows[i]["Director"] = txtDirector.Text;
        }

        dad.UpdateBatchSize = 0;

        int numUpdated = dad.Update(dtblProducts);
        lblResults.Text = String.Format("Updated {0} rows", numUpdated);
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Show DataAdapter Update</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    <asp:Repeater
        id="rptProducts"
        EnableViewState="false"
        Runat="server">
        <HeaderTemplate>
        <table>
        <tr>
            <td>Title</td><td>Director</td>
        </tr>
        </HeaderTemplate>
        <ItemTemplate>
        <tr>
        <td>
        <asp:TextBox
            id="txtTitle"
            Text='<%#Eval("Title")%>'
            Runat="server" />
        </td>
        <td>
        <asp:TextBox
            id="txtDirector"
            Text='<%#Eval("Director")%>'
            Runat="server" />
        </td>
        </tr>
        </ItemTemplate>
        <FooterTemplate>
        </table>
        </FooterTemplate>
    </asp:Repeater>
    <br />

    <asp:LinkButton
        id="lnkUpdate"
        Text="Update Products"
        Runat="server" OnClick="lnkUpdate_Click" />

    <br /><br />

    <asp:Label
        id="lblResults"
        EnableViewState="false"
        Runat="server" />

    </div>
    </form>
</body>
</html>


File: Web.config

<configuration>
  <connectionStrings>
    <add name="Products" 
         connectionString="Data Source=.\SQLEXPRESS;
         AttachDbFilename=|DataDirectory|MyDatabase.mdf;Integrated Security=True;User Instance=True" />
  </connectionStrings>
</configuration>








18.22.DataAdapter
18.22.1.DataAdapter is the bridge between an in-memory table and a physical table.
18.22.2.Performing Batch Updates