|
https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx |
Работа с базами данных
DataAdapter
DbDataAdapter является родительским классом для SqlDataAdapter, OleDbDataAdapter, OdbcDataAdapter. Этот класс содержит 4 объекта типа Command. Классы DataAdapter обеспечивают двусторонний обмен информацией.
SelectCommand — эта команда используется для выборки данных из базы. При этом класс DataTable заполняется данными.
UpdateCommand — обновляет данные (редактирование записей ).
InsertCommand — добавление новых записей.
DeleteCommand — команда для удаления записей.
Метод Fill класса DbDataAdapter заполняет объекты DataSet или DataTable данными, прочитанными в результате выполнения команды SelectCommand. Эта команда должна быть запросом SQL типа Select. Если таблицы уже существуют, в него добавляются новые таблицы. Вообще метод Fill перегружен 8 раз. Например, DbDataAdapter.Fill Method ( DataSet, String ) добавляет в DataSet таблицу с именем, указанным во втором параметре. Если такая таблица уже есть, она обновляется. Доступ к таблице можно получить с помощью ее имени индексатором:
DataTable tblProducts = data.Tables["Products"];
Метод DbDataAdapter.Update записывает в базу данных все изменения, которые произошли в связанном с ним объекте DataSet.
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();
}
}