Файл: 1_C#_Введение_в_программирование_Уч_пособ_(Марченко-2005).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.12.2025
Просмотров: 1363
Скачиваний: 3
С помощью этих методов от 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) или объект команды, осуществляющий обновление значений в БД.
Transaction
Под транзакцией понимается неделимая с точки зрения воздействия на базу данных последовательность операторов манипулирования данными:
чтения,
удаления,
вставки,
модификации,
приводящая к одному из двух возможных результатов:
либо последовательность выполняется, если все операторы правильные,
251
либо вся транзакция откатывается, если хотя бы один оператор не может быть успешно выполнен.
Прежде всего, необходимым условием применения транзакций как элементов моделт 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();
// Создаётся объект транзакции.
252
xTransaction = xConnection.BeginTransaction();
//Транзакция фиксируется в командах. xCommand1.Transaction = xTransaction; xCommand2.Transaction = xTransaction;
//Выполнение команд. xCommand1.ExecuteNonQuery(); xCommand2.ExecuteNonQuery();
//Если ВСЁ ХОРОШО и мы всё ещё здесь – ПРИНЯТЬ ТРАНЗАКЦИЮ! xTransaction.Commit();
}
catch
{
// Если возникли осложнения – отменяем транзакцию. xTransaction. Rollback();
}
finally
{
// По любому соединение закрывается. xConnection.Close();
}
253
Литература
1. |
Петзольд |
Чарльз |
Программирование |
для |
Microsoft |
Windows |
на |
С# |
|||||
В 2-х томах |
|
|
|
|
|
|
|
|
|
|
|
|
|
2002 г., Русская редакция |
|
|
|
|
|
|
|
|
|
|
|||
2. Петзольд Чарльз |
Программирование в тональности С# |
|
|
|
|
|
|||||||
512 |
стр., 2004 |
г., |
Русская редакция |
|
|
|
|
|
|
|
|
||
3. |
Эндрю |
Троелсен |
C# |
и |
платформа |
|
.NET. |
Библиотека |
программиста |
||||
796 |
стр., 2004 |
г., |
Питер. Серия: Библиотека программиста. |
|
|
|
|
|
|||||
4.Герберт Шилдт C#. Учебный курс
511стр., 2002 г., Питер.
5.Герберт Шилдт Полный справочник по C#
752стр., 2004 г., Вильямс.
6. Джеффри Рихтер Программирование на платформе Microsoft .NET Framework 512 стр., 2005 г., Питер, Русская редакция.
7.В. Жарков Самоучитель Жаркова по анимации и мультипликации в Visual С# .NET
432стр., 2004 г., Жарков Пресс.
8.Джесс Либерти Программирование на C#
688 стр., 2003 г., Символ-Плюс.
9.Александр Фролов, Григорий Фролов Язык C#. Самоучитель
560стр., 2002 г., Диалог-МИФИ.
10.Майо Джозеф C#. Искусство программирования
656 стр., 2002 г., ДиаСофт.
11.У. Робисон C# без лишних слов
352стр., 2002 г., ДМК.
12.Микелсен К. Язык программирования C#. Лекции и упражнения
656стр., 2002 г., ДиаСофт
13. |
Разработка WINDOWS-приложений на Microsoft Visual Basic.NET и Microsoft Visual |
C# .NET. Учебный курс. |
|
512 |
стр., Русская Редакция |
14. |
Библиотека MSDN на русском языке |
http://msdn.microsoft.com/library/rus/
254
Оглавление |
4 |
Предисловие............................................................ |
|
Введение............................................................... |
5 |
Обзор .NET. Основные понятия........................................... |
5 |
Программа на C#....................................................... |
10 |
Основы языка ........................................................... |
11 |
Пространство имён..................................................... |
11 |
Система типов......................................................... |
11 |
Класс и Структура. Первое приближение................................. |
13 |
Литералы. Представление значений...................................... |
14 |
Арифметические литералы ............................................. |
14 |
Логические литералы ................................................. |
15 |
Символьные литералы ................................................. |
15 |
Символьные escape-последовательности ................................ |
15 |
Строковые литералы .................................................. |
15 |
Операции и выражения.................................................. |
15 |
Приоритет операций.................................................... |
16 |
Приведение типов...................................................... |
16 |
Особенности выполнения арифметических операций........................ |
18 |
Особенности арифметики с плавающей точкой............................. |
18 |
Константное выражение................................................. |
19 |
Переменные элементарных типов. Объявление и инициализация............. |
19 |
Константы............................................................. |
20 |
Перечисления.......................................................... |
20 |
Объявление переменных. Область видимости и время жизни................ |
21 |
Управляющие операторы................................................. |
22 |
if, if … else … ..................................................... |
23 |
switch .............................................................. |
24 |
while ............................................................... |
26 |
do … while .......................................................... |
26 |
for ................................................................. |
26 |
foreach ............................................................. |
27 |
goto, break, continue ............................................... |
27 |
Методы................................................................ |
28 |
Синтаксис объявления метода ......................................... |
28 |
Вызов метода ........................................................ |
29 |
Перегрузка методов.................................................... |
29 |
Способы передачи параметров при вызове метода......................... |
30 |
Передача параметров. Ссылка и ссылка на ссылку как параметры.......... |
31 |
Сравнение значений ссылок............................................. |
32 |
this в нестатическом методе........................................... |
32 |
Свойства.............................................................. |
32 |
Обработка исключений.................................................. |
34 |
Массив. Объявление.................................................... |
36 |
Инициализация массивов................................................ |
37 |
Примеры инициализации массивов........................................ |
39 |
Два типа массивов: Value Type and Reference Type...................... |
40 |
Встроенный сервис по обслуживанию простых массивов.................... |
40 |
Реализация сортировки в массиве стандартными методами................. |
41 |
Подробнее о массивах массивов (jagged array).......................... |
45 |
Массивы как параметры................................................. |
47 |
Спецификатор params................................................... |
49 |
Main в классе. Точка входа............................................ |
49 |
Создание объекта. Конструктор......................................... |
51 |
Операция new.......................................................... |
52 |
В управляемой памяти нет ничего, что бы создавалось без конструктора.. |
53 |
Кто строит конструктор умолчания...................................... |
53 |
this в контексте конструктора......................................... |
54 |
Перегрузка операций................................................... |
55 |
Синтаксис объявления операторной функции.............................. |
56 |
Унарные операции. Пример объявления и вызова.......................... |
57 |
Бинарные операции..................................................... |
58 |
true и false Operator................................................. |
59 |
Определение операций конъюнкция и дизъюнкции.......................... |
59 |
255 |
|
А как же || и &&...................................................... |
60 |
И вот результат…......................................................60
Пример. Свойства и индексаторы........................................ |
63 |
explicit и implicit. Преобразования явные и неявные................... |
66 |
Наследование.......................................................... |
68 |
Наследование и проблемы доступа....................................... |
69 |
Явное обращение к конструктору базового класса........................ |
70 |
Кто строит БАЗОВЫЙ ЭЛЕМЕНТ............................................ |
71 |
Переопределение членов базового класса................................ |
72 |
Наследование и new модификатор........................................ |
74 |
Полное квалифицированное имя. Примеры использования................... |
74 |
Прекращение наследования. sealed спецификатор......................... |
75 |
Абстрактные функции и абстрактные классы.............................. |
76 |
Ссылка на объект базового класса...................................... |
78 |
Операции is и as...................................................... |
79 |
Виртуальные функции. Принцип полиморфизма............................. |
81 |
Интерфейсы............................................................ |
83 |
Делегаты.............................................................. |
88 |
События............................................................... |
93 |
События и делегаты. Различия.......................................... |
97 |
Атрибуты, сборки, рефлексия ............................................ |
99 |
Рефлексия (отражение) типов........................................... |
99 |
Реализация отражения. Type, InvokeMember, BindingFlags............... |
101 |
Атрибуты............................................................. |
105 |
Сборка. Класс Assembly............................................... |
109 |
Класс сборки в действии.............................................. |
111 |
Разбор полётов....................................................... |
114 |
Класс System.Activator............................................... |
114 |
Версия сборки........................................................ |
115 |
Файл конфигурации приложения......................................... |
115 |
Общедоступная сборка................................................. |
116 |
Игры со сборками из GAC.............................................. |
117 |
Динамические сборки.................................................. |
118 |
Динамическая сборка: создание, сохранение, загрузка, выполнение...... |
119 |
Ввод-вывод ............................................................ |
122 |
Базовые операции..................................................... |
122 |
Потоки: байтовые, символьные, двоичные............................... |
122 |
Предопределённые потоки ввода-вывода................................. |
124 |
Функция ToString()................................................... |
125 |
Консольный ввод-вывод. Функции-члены класса Console.................. |
126 |
Консольный вывод. Форматирование..................................... |
128 |
Функции вывода. Нестандартное (custom) форматирование значений....... |
129 |
Консольный ввод. Преобразование значений............................. |
132 |
Файловый ввод-вывод.................................................. |
132 |
Потоки ................................................................ |
135 |
Процесс, поток, домен................................................ |
135 |
Домен приложения..................................................... |
135 |
Обзор пространства имён System.Threading............................. |
137 |
Многопоточность...................................................... |
137 |
Виды многопоточности................................................. |
137 |
А кто в домене живёт…................................................138
Класс Thread. Общая характеристика................................... |
139 |
Именование потока.................................................... |
139 |
Игры с потоками...................................................... |
140 |
Характеристики точки входа дополнительного потока.................... |
141 |
Запуск вторичных потоков............................................. |
141 |
Приостановка выполнения потока....................................... |
142 |
Отстранение потока от выполнения..................................... |
143 |
Завершение потоков................................................... |
144 |
Метод Join()......................................................... |
145 |
Состояния потока (перечисление ThreadState).......................... |
146 |
Одновременное пребывание потока в различных состояниях............... |
147 |
Фоновый поток........................................................ |
148 |
Приоритет потока..................................................... |
149 |
256 |
|