DataSet
DataSet — это класс, содержащий в себе одну или несколько таблиц DataTable и связи между ними. Класс DataSet — это представление в памяти информации, считанной через ADO из баз данных или XML. Он позволяет манипулировать данными после отключения от источника данных.
Коллекция таблиц хранится в свойстве Tables, а отношений — в свойстве Relations.
Основываясь на таблицах DataSet, можно создавать представления — DataView.
Напишем страницу, в которой будут использоваться представленные классы.
База Northwind входит в комплект SDK. Ее можно установить на сервере, запустив командную строку SQLExpress:
sqlcmd -E -S (local)\SQLExpress -i InstNwnd.sql
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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 runat="server"> <title>Работа с базой</title> </head> <body> <form id="Form1" runat="server"> <asp:DropDownList ID="DropDownList1" runat="server"> </asp:DropDownList> <asp:DataGrid id="DataGrid1" runat="server"></asp:DataGrid> </form> </body> </html>
Файл с кодом:
using System; using System.Data; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { String strConnect; String strCommand; strConnect = @"Data Source=.\SQLExpress;Initial Catalog=Northwind;Integrated Security=True"; SqlConnection myConn = new SqlConnection(strConnect); strCommand = "SELECT CategoryName, CategoryID FROM Categories"; SqlDataAdapter myData = new SqlDataAdapter(strCommand, myConn);
DataSet DataSet1 = new DataSet(); myData.Fill(DataSet1, "Categories"); strCommand = "SELECT ProductName, UnitPrice, CategoryID FROM Products"; myData.SelectCommand.CommandText = strCommand; myData.Fill(DataSet1, "Products"); DataSet1.Relations.Add(DataSet1.Tables[0].Columns["CategoryID"], DataSet1.Tables[1].Columns["CategoryID"]);
DataView myView = new DataView(DataSet1.Tables["Products"], "", "ProductName", DataViewRowState.CurrentRows); DataGrid1.DataSource = myView; DataGrid1.DataBind(); DropDownList1.DataSource = DataSet1.Tables[0]; DropDownList1.DataTextField = "CategoryName"; DropDownList1.DataValueField = "CategoryID"; DropDownList1.DataBind(); myConn.Close();
} }