ASP.NET Tutorial/ADO.net Database/DataAdapter

Материал из .Net Framework эксперт
Версия от 14:56, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

   <source lang="csharp">

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">
   <asp:GridView
       id="grdProducts"
       DataSourceID="srcProducts"
       Runat="server" />
    <asp:ObjectDataSource
       id="srcProducts"
       TypeName="Product"
       SelectMethod="GetAll"
       Runat="server" />
   </form>

</body> </html></source>


Performing Batch Updates

   <source lang="csharp">

<%@ 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">
   <asp:Repeater
       id="rptProducts"
       EnableViewState="false"
       Runat="server">
       <HeaderTemplate>
</HeaderTemplate> <ItemTemplate> </ItemTemplate> <FooterTemplate>
TitleDirector
       <asp:TextBox
           id="txtTitle"
           Text="<%#Eval("Title")%>"
           Runat="server" />
       <asp:TextBox
           id="txtDirector"
           Text="<%#Eval("Director")%>"
           Runat="server" />
       </FooterTemplate>
   </asp:Repeater>
   
<asp:LinkButton id="lnkUpdate" Text="Update Products" Runat="server" OnClick="lnkUpdate_Click" />

<asp:Label id="lblResults" EnableViewState="false" Runat="server" />
   </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></source>