ADO.NET обеспечивает мост между внешними элементами управления и внутренними базами данных. Объекты ADO.NET инкапсулируют все операции доступа к данным и элементы управления, которые взаимодействуют с объектами отображения данных. Таким образом, детали перемещения данных скрыты.
На следующей диаграмме показан объект ADO.NET в целом:
Набор данных представляет собой подмножество базы данных. У него нет постоянного подключения к базе данных. Для обновления базы данных требуется повторное подключение. DataSet включает объекты DataTable и DataRelation. Объекты DataRelation представляют связь между двумя таблицами.
В следующей таблице приведены некоторые важные свойства класса DataSet:
свойство | описывать |
---|---|
С учетом регистра | Указывает, чувствительна ли строка, которую нужно сравнить с таблицей данных, к регистру. |
Контейнер | Освободите место для компонента. |
ИмяНабора Данных | Получает или задает имя существующей коллекции данных. |
Дефолтвиевменеджер | Возвращает представление данных в коллекции данных. |
Режим дизайна | Указывает, находится ли компонент в режиме разработки. |
Принудительное ограничение | Указывает, соблюдаются ли ограничения при попытке загрузить файл. |
События | Получите список обработчиков событий, связанных с этим компонентом. |
Расширенные свойства | Получает коллекцию настраиваемых сведений о пользователе, связанных с DataSet. |
Имеет ошибки | Укажите, есть ли ошибки. |
IsInitialized | Указывает, инициализирован ли DataSet. |
Языковой стандарт | Получает или задает информацию, используемую для сравнения строк с таблицей. |
Пространство имен | Получает или задает пространство имен DataSet. |
Префикс | Получает или задает префикс XML, который является псевдонимом пространства имен. |
Отношения | Возвращает коллекцию объектов DataRelation. |
Таблицы | Возвращает коллекцию объектов DataTable. |
В следующей таблице перечислены некоторые важные методы класса DataSet:
метод | описывать |
---|---|
Принять изменения | Принимает все изменения, вызванные загрузкой DataSet или этого метода. |
Начатьинит | Запустите инициализацию DataSet. Эта инициализация происходит во время выполнения. |
Прозрачный | Очистить данные. |
Клонировать | Клонируйте структуру DataSet, включая все структуры, связи и ограничения DataTable. Но данные не клонируются. |
Копировать | Копирование данных и структур. |
СоздатьЧтениеДанных() | Возвращает DataTableReader с набором результатов для каждого DataTable в том же порядке, в котором отображаются таблицы в коллекции Tables. |
CreateDataReader(DataTable[]) | Возвращает DataTableReader с одним набором результатов для каждого DataTable. |
Конецинит | Завершает инициализацию набора данных, используемого в форме или другого компонента. Инициализация происходит во время выполнения. |
Равно(Объект) | Определяет, равен ли указанный объект текущему объекту. |
Завершить | Освободите ресурсы для выполнения дополнительной очистки. |
Получить изменения | Получает копию DataSet, содержащую все изменения в DataSet с момента его загрузки или с момента последнего вызова AcceptChanges. |
GetChanges(DataRowState) | Получает копию DataSet, отфильтрованную с помощью DataRowState, содержащую все изменения в наборе данных с момента его последней загрузки или с момента вызова AcceptChanges. |
GetDataSetSchema | Получите копию XmlSchemaSet для DataSet. |
ПолучитьОбъектДанные | Заполните сериализованный информационный объект данными, необходимыми для сериализации DataSet. |
GetType | Получите тип текущего экземпляра. |
ПолучитьXML | Возвращает XML-представление данных, хранящихся в DataSet. |
ПолучитьXMLSchema | Возвращает схему XML представления XML данных, хранящихся в DataSet. |
ХасИзменения() | Получает значение, указывающее, изменился ли набор данных DataSet, включая новые строки, удаленные строки или измененные строки. |
Хасчанжес (DataRowState) | Получает значение, указывающее, есть ли в DataSet отфильтрованные изменения DataRowState, включая новые строки, удаленные строки или измененные строки. |
IsBinarySerialized | Проверьте формат сериализованного представления DataSet. |
Загрузить(IDataReader, LoadOption, DataTable[]) | Используйте предоставленный IDataReader для заполнения DataSet значениями из источника данных, используя при этом массив экземпляров DataTable для предоставления информации о схеме и пространстве имен. |
Загрузить(IDataReader, LoadOption, String[]) | Заполните DataSet значениями из источника данных, используя предоставленный IDataReader и используя массив строк, чтобы предоставить имена таблицам в DataSet. |
Слияние() | Объединяет указанный массив объектов DataSet, DataTable или DataRow с текущим DataSet или DataTable. Существуют различные перегрузки этого метода. |
ЧитатьXML() | Считайте схему XML и данные в DataSet. Существуют различные перегрузки этого метода. |
ЧитатьXMLSchema(0) | Считайте XML-схему в DataSet. Существуют различные перегрузки этого метода. |
Отклонить изменения | Откат всех изменений, внесенных в DataSet с момента его создания или с момента последнего вызова DataSet.AcceptChanges. |
НаписатьXML() | Запишите XML-данные и схему из DataSet. Существуют различные перегрузки этого метода. |
НаписатьXMLSchema() | Запишите XML-схему из DataSet. Существуют различные перегрузки этого метода. |
Класс DataTable представляет таблицу в базе данных. Он имеет следующие важные свойства: Большинство свойств доступны только для чтения, за исключением свойства PrimaryKey:
свойство | описывать |
---|---|
РебенокОтношения | Получает коллекцию дочерних отношений данного DataTable. |
Столбцы | Получает коллекцию столбцов, принадлежащих этой таблице. |
Ограничения | Получает коллекцию ограничений, поддерживаемых этой таблицей. |
Набор данных | Получите набор данных, которому принадлежит эта таблица. |
Представление по умолчанию | Получает пользовательское представление таблицы, которое может включать отфильтрованные представления или позиции курсора. |
Родительские отношения | Получает коллекцию родительских отношений данного DataTable. |
Первичный ключ | Получает или задает массив столбцов, которые служат первичными ключами для таблицы данных. |
Строки | Получает коллекцию строк, принадлежащих этой таблице. |
В следующей таблице перечислены некоторые важные методы класса DataTable:
метод | описывать |
---|---|
Принять изменения | Фиксирует все изменения, внесенные в этот набор данных с момента его загрузки или с момента последнего вызова AcceptChanges. |
Прозрачный | Очищает DataSet от любых данных, удаляя все строки из всех таблиц. |
Получить изменения | Получает копию DataSet, содержащую все изменения в DataSet с момента его последней загрузки или с момента вызова AcceptChanges. |
GetErrors | Получает массив объектов DataRow, содержащих ошибки. |
Импортировать строки | Скопируйте DataRow в DataTable, сохранив все настройки свойств, а также начальные и текущие значения. |
Лоаддатаров | Найдите и обновите определенные строки. Если соответствующая строка не найдена, создается новая строка с заданным значением. |
Объединить | Объединяет указанный массив объектов DataSet, DataTable или DataRow с текущим DataSet или DataTable. |
Новаястрока | Создайте новую DataRow с той же схемой, что и таблица. |
Отклонить изменения | Откатить все изменения, внесенные в таблицу с момента загрузки таблицы или с момента последнего вызова AcceptChanges. |
Перезагрузить | Очищает все таблицы и удаляет все связи, внешние ограничения и таблицы из набора данных. Подклассы должны переопределить Reset, чтобы восстановить DataSet в исходное состояние. |
Выбирать | Получает массив объектов DataRow. |
Объект DataRow представляет строку в таблице и имеет следующие важные свойства:
свойство | описывать |
---|---|
Имеет ошибки | Указывает, есть ли ошибки. |
Предметы | Получите или установите данные, хранящиеся в определенном столбце. |
ItemArrays | Получите или установите все значения в этой строке. |
Стол | Верните родительскую таблицу. |
В следующей таблице перечислены важные методы класса DataRow:
метод | описывать |
---|---|
Принять изменения | Применяет все изменения с момента вызова этого метода. |
НачатьПравить | Начните операцию редактирования. |
ОтменаРедактировать | Отмените операцию редактирования. |
Удалить | Удалить строки данных. |
КонецПравить | Завершите операцию редактирования. |
GetChildRows | Получите подстроки этой строки. |
GetParentRow | Получите родительскую строку. |
GetParentRows | Получите родительскую строку DataRow. |
Отклонить изменения | Откатить все изменения, внесенные после вызова AcceptChanges. |
Объект DataAdapter действует как посредник между объектом DataSet и базой данных. Это помогает DataSet получать данные из нескольких баз данных или других источников данных.
Объекты DataReader являются альтернативой объединению DataSet и DataAdapter. Этот объект обеспечивает прямой доступ к записям данных в базе данных. Эти объекты подходят только для доступа только для чтения, например, для заполнения списка и последующего его отключения.
Объект DbConnection представляет соединение с источником данных. Это соединение может использоваться различными командными объектами. Объект DbCommand представляет команду или хранимый процесс, который отправляется в базу данных для получения данных или управления ими.
До сих пор мы использовали таблицы и базы данных с наших компьютеров. В этом случае мы создадим таблицу, добавим столбцы, строки и данные и отобразим таблицу с помощью элемента управления GridView.
Исходный код файла выглядит следующим образом:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="createdatabase._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> Untitled Page </title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server"> </asp:GridView> </div> </form> </body></html>
Код файла следующий:
namespace createdatabase{ public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataSet ds = CreateDataSet(); GridView1.DataSource = ds.Tables["Student"]; GridView1.DataBind(); } } private DataSet CreateDataSet() { //creating a DataSet object for tables DataSet dataset = new DataSet(); // creating the student table DataTable Students = CreateStudentTable(); dataset.Tables.Add(Students); return dataset; } private DataTable CreateStudentTable() { DataTable Students = new DataTable("Student"); // adding columns AddNewColumn(Students, "System.Int32", "StudentID"); AddNewColumn(Students, "System.String", "StudentName"); AddNewColumn(Students, "System.String", "StudentCity"); // adding rows AddNewRow(Students, 1, "MH Kabir", "Kolkata"); AddNewRow(Students, 1, "Shreya Sharma", "Delhi"); AddNewRow(Students, 1, "Rini Mukherjee", "Hyderabad"); AddNewRow(Students, 1, "Sunil Dubey", "Bikaner"); AddNewRow(Students, 1, "Rajat Mishra", "Patna"); return Students; } private void AddNewColumn(DataTable table, string columnType, string columnName) { DataColumn column = table.Columns.Add(columnName, Type.GetType(columnType)); } //adding data into the table private void AddNewRow(DataTable table, int id, string name, string city) { DataRow newrow = table.NewRow(); newrow["StudentID"] = id; newrow["StudentName"] = name; newrow["StudentCity"] = city; table.Rows.Add(newrow); } }}
При выполнении программы обратите внимание на следующие аспекты:
Программа сначала создает коллекцию данных, а затем связывает ее с помощью метода DataBind() элемента управления GridView.
Метод Createdataset() — это определяемая пользователем функция, которая создает новый объект DataSet и вызывает дополнительный определяемый пользователем метод CreateStudentTable() для создания таблиц и последующего добавления их в коллекцию таблиц DataSet.
Метод CreateStudentTable() вызывает определяемые пользователем методы AddNewColumn() и AddNewRow() для создания столбцов и строк таблицы и добавления данных в строки. Когда страница запускается, она возвращает строки таблицы, как показано ниже: