ASP.NET Tutorial/ADO.net Database/DataAdapter — различия между версиями

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

Текущая версия на 11:56, 26 мая 2010

DataAdapter is the bridge between an in-memory table and a physical table.

File: App_Code\Product.cs
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;
using System.Collections.Generic;
public class Product
{
    private static readonly string _connectionString;
    public DataTable GetAll()
    {
        SqlDataAdapter dad = new SqlDataAdapter("SELECT Title,Director FROM Products", _connectionString);
        DataTable dtblProducts = new DataTable();
        dad.Fill(dtblProducts);
        return dtblProducts;
    }
    static Product()
    {
        _connectionString = WebConfigurationManager.ConnectionStrings["Products"].ConnectionString;
    }
}
File: Web.config
<configuration>
  <connectionStrings>
    <add name="Products" 
         connectionString="Data Source=.\SQLEXPRESS;
         AttachDbFilename=|DataDirectory|MyDatabase.mdf;Integrated Security=True;User Instance=True" />
  </connectionStrings>
</configuration>
File: ShowProduct.aspx
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Show Product</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:GridView
        id="grdProducts"
        DataSourceID="srcProducts"
        Runat="server" />
     <asp:ObjectDataSource
        id="srcProducts"
        TypeName="Product"
        SelectMethod="GetAll"
        Runat="server" />
    </div>
    </form>
</body>
</html>


Performing Batch Updates

<%@ 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>