Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft.




Скачать 5.55 Mb.
Название Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft.
страница 112/112
Дата публикации 11.05.2014
Размер 5.55 Mb.
Тип Книга
literature-edu.ru > Информатика > Книга
1   ...   104   105   106   107   108   109   110   111   112

Использование объекта DataReader


Обеспечение так называемого "доступа к ОТСОЕДИНЕННЫМ данным" – заслуга объекта DataReader. Дело в том, что получение данных приложением из базы данных все равно требует установления соединения, и это соединение должно быть максимально коротким по продолжительности и эффективным — быстро соединиться, быстро прочитать и запомнить информацию из базы, быстро разъединиться. Именно для этих целей используется в ADO .NET объект DataReader.

После получения ссылки на объект DataReader можно организовать просмотр записей. Для получения необходимой информации из базы данных этого достаточно.

У объекта DataReader имеется "указатель чтения", который устанавливается на первую запись результирующего набора записей, образовавшегося в результате выполнения метода ExecuteReader(). Очередная (в том числе и первая) запись набора становится доступной в результате выполнения метода Read().

В случае успешного выполнения этого метода указатель переводится на следующий элемент результирующей записи, а метод Read() возвращает значение true.

В противном случае метод возвращает значение false. Все это позволяет реализовать очень простой и эффективный механизм доступа к данным, например в рамках цикла while.

Если иметь в виду, что каждая запись состоит из одного и того же количества полей, которые к тому же имеют различные идентификаторы, то очевидно, что доступ к значению отдельного поля становится возможным через индексатор, значением которого может быть как значение индекса, так и непосредственно обозначающий данное поле идентификатор:

while (myDataReader.Read())

{

object myObj0 = myDataReader[5];

object myObj1 = myDataReader["CustomerID"];

}

Важно!

При таком способе доступа значения полей представляются ОБЪЕКТАМИ. Хотя, существует возможность получения от DataReader'а и типизированных значений.

Следует иметь в виду, что DataReader удерживает монопольный доступ к активному соединению. Вот как всегда! Пообещали отсоединенный доступ к данным, а получаем постоянное соединение! Закрывается соединение методом Close():

myDataReader.Close();

Можно также настроить DataReader таким образом, чтобы закрытие соединения происходило автоматически, без использования команды Close(). Для этого при вызове метода ExecuteReader свойство объекта команды CommandBehavior должно быть выставлено в CloseConnection.

Пример. Выборка столбца таблицы с помощью объекта DataReader. Предполагается наличие объекта OleDbCommand под именем myOleDb Command. Свойство Connection этого объекта определяет соединение с именем myConnection.

Итак:

// Активное соединение открыто.

MyConnection.Open();

System.Data.OleDb.OleDbDataReader myReader = myOleDbCommand.ExecuteReader();

while (myReader.Read())

{

Console.WriteLine(myReader["Customers"].ToString());

}

myReader.Close();

// Активное соединение закрыто.

MyConnection.Close();

Извлечение типизированных данных


Среди множества методов классов DataReader (SqlDataReader и OleDbDataReader) около десятка методов, имена который начинаются с приставки Get..., следом за которой – имя какого-то типа. GetInt32, GetBoolean, ...

С помощью этих методов от DataReader можно получить и типизированные значения, а не только объекты базового типа!

int CustomerID;

string Customer;

// Определить порядковый номер поля 'CustomerID'

CustomerID = myDataReader.GetOrdinal("CustomerID");

// Извлечь строку из этого поля и прописать ее в переменную Customer

Customer = myDataReader.GetString(CustomerID);

DataAdapter


DataAdapter – составная часть провайдера данных. То есть подсоединенная компонента объектной модели ADO .NET. Используется для заполнения объекта DataSet и модификации источника данных. Выполняет функции посредника при взаимодействии БД и объекта DataSet.

Обеспечивает связь между источником данных и объектом DataSet. С одной стороны, база данных, с другой – DataSet. Извлечение данных и заполнение объекта DataSet – назначение DataAdapter'а.

Функциональные возможности DataAdapter'а реализуются за счет:

  • метода Fill, который изменяет данные в DataSet. При выполнении метода Fill объект DataAdapter заполняет DataTable или DataSet данными, полученными из БД. После обработки данных, загруженных в память, с помощью метода Update можно записать модифицированные записи в БД;

  • метода Update, который позволяет изменять данные в источнике данных с целью достижения обратного соответствия данных в источнике данных по отношению к данным в DataSet.

Фактически, DataAdapter управляет обменом данных и обновлением содержимого источника данных.

DataAdapter представляет набор команд для подключения к базе данных и модификации данных.

Три способа создания DataAdapter:

  • с помощью окна Server Explorer;

  • с помощью мастера Data Adapter Configuration Wizard;

  • ручное объявление и настройка в коде.

Достойны особого внимания ЧЕТЫРЕ свойства этого класса, фактически представляющие команды БД. Через эти команды объект DataAdapter и воздействует на DataSet и Базу.

  • SelectCommand – содержит текст (строку sql) или объект команды, осуществляющей выборку данных из БД. При вызове метода Fill эта команда выполняется и заполняет объект DataTable или объект DataSet.

  • InsertCommand – содержит текст (строку sql) или объект команды, осуществляющий вставку строк в таблицу.

  • DeleteCommand – содержит текст (строку sql) или объект команды, осуществляющий удаление строки из таблицы.

  • UpdateCommand – содержит текст (строку sql) или объект команды, осуществляющий обновление значений в БД.

Транзакция


Под транзакцией понимается неделимая с точки зрения воздействия на базу данных последовательность операторов манипулирования данными:

  • чтения,

  • удаления,

  • вставки,

  • модификации, приводящая к одному из двух возможных результатов:

  • либо последовательность выполняется, если все операторы правильные,

  • либо вся транзакция откатывается, если хотя бы один оператор не может быть успешно выполнен.

Прежде всего, необходимым условием применения транзакций как элементов модели ADO .NET является поддержка источником данных (базой данных) концепции транзакции. Обработка транзакций гарантирует целостность информации в базе данных. Таким образом, транзакция переводит базу данных из одного целостного состояния в другое.

При выполнении транзакции система управления базами данных должна придерживаться определенных правил обработки набора команд, входящих в транзакцию. В частности, гарантией правильности и надежности работы системы управления базами данных являются четыре правила, известные как требования ACID.

  • Atomicity – неделимость. Транзакция неделима в том смысле, что представляет собой единое целое. Все ее компоненты либо имеют место, либо нет. Не бывает частичной транзакции. Если может быть выполнена лишь часть транзакции, она отклоняется.

  • Consistency – согласованность. Транзакция является согласованной, потому что не нарушает бизнес-логику и отношения между элементами данных. Это свойство очень важно при разработке клиент-серверных систем, поскольку в хранилище данных поступает большое количество транзакций от разных систем и объектов. Если хотя бы одна из них нарушит целостность данных, то все остальные могут выдать неверные результаты.

  • Isolation – изолированность. Транзакция всегда изолированна, поскольку ее результаты самодостаточны. Они не зависят от предыдущих или последующих транзакций – это свойство называется сериализуемостью и означает, что транзакции в последовательности независимы.

  • Durability – устойчивость. Транзакция устойчива. После своего завершения она сохраняется в системе, которую ничто не может вернуть в исходное (до начала транзакции) состояние, т.е. происходит фиксация транзакции, означающая, что ее действие постоянно даже при сбое системы. При этом подразумевается некая форма хранения информации в постоянной памяти как часть транзакции.

Указанные выше правила реализуются непосредственно источником данных. На программиста возлагаются обязанности по созданию эффективных и логически верных алгоритмов обработки данных. Он решает, какие команды должны выполняться как одна транзакция, а какие могут быть разбиты на несколько последовательно выполняемых транзакций.

Работа с транзакцией предполагает следующую последовательность действий:

  • Инициализация транзакции.

Обеспечивается вызовом метода BeginTransaction() от имени объекта Connection, представляющего открытое соединение. В результате выполнения этого метода возвращается ссылка на объект – представитель класса Transaction, который должен быть записан в свойство Transaction всех объектов-команд, которые должны быть задействованы в данной транзакции.

  • Выполнение команд – участников транзакции с анализом их возвращаемых значений (обычно этот анализ сводится к тривиальному размещению всех операторов, связанных с выполнением транзакции в один try-блок).

  • Если все команды выполняются удовлетворительно, от имени объекта – представителя класса Transaction вызывается метод Commit(), который подтверждает изменение состояния источника данных. В противном случае (блок catch), от имени объекта – представителя класса Transaction вызывается метод Rollback(), который отменяет ранее произведенные изменения состояния Базы данных.

Ниже приводится пример исполнения транзакции с помощью объекта соединения класса OleDbConnection с именем xConnection и пары объектов OleDbCommand с именами xCommand1 и xCommand2:

System.Data.OleDb.OleDbTransaction xTransaction = null;

try

{

xConnection.Open();

// Создается объект транзакции.

xTransaction = xConnection.BeginTransaction();

// Транзакция фиксируется в командах.

xCommand1.Transaction = xTransaction;

xCommand2.Transaction = xTransaction;

// Выполнение команд.

xCommand1.ExecuteNonQuery();

xCommand2.ExecuteNonQuery();

// Если ВСЕ ХОРОШО и мы все еще здесь – ПРИНЯТЬ ТРАНЗАКЦИЮ!

xTransaction.Commit();

}

catch

{

// Если возникли осложнения – отменяем транзакцию.

xTransaction. Rollback();

}

finally

{

// В любом случае соединение закрывается.

xConnection.Close();

}
1   ...   104   105   106   107   108   109   110   111   112

Похожие:

Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft. icon «Проектирование интегрированного урока английского языка и изобразительного...
Ьного искусства для повышения мотивации обучающихся к изучению иностранного языка представляет собой межпредметный, внутриклассный,...
Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft. icon Книга представляет собой квинтэссенцию двадцатилетие о опыта работы...
Эта книга представляет собой подробное руководство позволяющее овладеть основами джйотиш древней ведической астролоши
Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft. icon Учебное пособие автор: панкин сергей фёдорович объем 38,54 А. Л....
Книга написана в соответствии с требованиями государственного стандарта высшего профессионального образования по специальности 022200...
Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft. icon Данное пособие представляет собой дополненный вариант печатного издания: Марченя П. П
Данное пособие представляет собой дополненный вариант печатного издания: Марченя П. П. Культурология: Учеб пособие. М.: Мфюа, 2004...
Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft. icon Основы информатики и вычислительной техники системы программирования
Рассматриваются основные понятия языков программирования. Излагаются процедурный и объектный подходы в программировании. Более подробно...
Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft. icon Книга представляет собой расширенное и переработанное издание пособий...
Рецензенты: учитель русского языка и литературы В. Г. Богин (г. Зеленоград), психотерапевт Н. В. Жутикова (г. Новосибирск)
Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft. icon Краткое содержание Глава 1
Книга «Психология и культура» представляет собой уни­кальный труд многих ученых из разных стран, который окажет неоценимую помощь...
Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft. icon Урок исследование «Наблюдение за горящей свечой»
Рассмотрение физических явлений, происходящих при горении свечи, представляет собой самый широкий путь, которым можно подойти к изучению...
Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft. icon Конспект лекций доцента и. А. Волковой по курсу «системы программирования»
Система программирования – комплекс программных инструментов и библиотек, который поддерживает создание и существование программного...
Книга представляет собой пособие по изучению языка программирования C#, который является одним из важных элементов платформы Microsoft. icon Отчет по производственной практике 230201 Информационные системы и технологии
Уровень интерфейса пользователя представляет собой набор компонентов в браузере. Уровень базы данных прдставляет собой бд mysql....
Литература


При копировании материала укажите ссылку © 2015
контакты
literature-edu.ru
Поиск на сайте

Главная страница  Литература  Доклады  Рефераты  Курсовая работа  Лекции