ASP.NET Tutorial/ADO.net Database/DataAdapter — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 18:30, 26 мая 2010
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>
Title | Director |
<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>