- •Атрибуты в среде .Net и языке c#.
- •Метаданные
- •Понятие атрибутов
- •Предопределенные и собственные атрибуты
- •Потребители атрибутов
- •Применение атрибутов
- •Сокращенное именование атрибутов
- •Создание собственных атрибутов:
- •Применение собственных атрибутов:
- •Ограничение использования атрибутов:
- •Атрибуты уровня сборки и модуля:
- •Рефлексия атрибутов:
- •Выводы:
- •Язык xml. Классы платформы .Net для работы с xml-данными.
- •Синтаксис xml
- •Работа с xml при помощи System.Xml
- •Работа с xml при помощи linq to xml
- •Выводы:
- •Потоковый ввод-вывод. Файлы. Работа с файлами и каталогами. Пространство имен System.Io
- •Классы Directory (DirectoryInfo) и File (FileInfo) Некоторые общие свойства классов DirectoryInfo и FileInfo:
- •Дополнительные возможности класса DirectoryInfo
- •Дополнительные возможности класса FileInfo
- •Дополнительные члены File
- •Потоковый ввод-вывод
- •Работа с классом FileStream
- •Работа с классами StreamWriter и StreamReader
- •Классы StringWriter и StringReader
- •Работа с классами BinaryWriter и BinaryReader
- •Выводы:
- •Сериализация. Атрибуты. Стандартные форматы сериализации. Понятие сериализации объектов
- •Роль графов объектов
- •Конфигурирование объектов для сериализации
- •Общедоступные поля, приватные поля и общедоступные свойства
- •Стандартные форматеры сериализации
- •Настройка сериализации с использованием атрибутов
- •Выводы:
- •Понятие бд и субд. Язык sql. Ado.Net как средство доступа из c# к субд. Понятие бд
- •Понятие субд
- •Обзор синтаксиса
- •Подключенный уровень
- •Автономный уровень
- •Основные свойства класса DataSet
- •Основные методы класса DataSet
- •Типы DataColumn и DataRow
- •Основные члены типа DataColumn:
- •Основные члены типа DataRow:
- •Работа с адаптерами данных:
- •Основные члены класса DbDataAdapter:
- •Параллельные вычисления. Многозадачность и многопоточность.
- •Некоторые члены класс Process:
- •Некоторые члены класса ProcessThread
- •Домены приложений
- •Некоторые члены класс AppDomain:
- •Многопоточность. Классификация состояний потока. Средства многопоточного программирования System.Threading.
- •Некоторые члены пространства имен System.Threading
- •Основные члены класс Thread
- •Состояния потока
- •Многопоточное программирование при помощи асинхронных вызовов делегатов
- •Создание вторичных потоков при помощи Thread.Start()
- •Синхронизация с помощью lock
- •Синхронизация с использованием типа System.Threading.Monitor
- •Синхронизация с использованием типа System.Threading.Interlocked
- •Синхронизация с использованием атрибута [Synchronization]
- •Использование System.Threading.Timer
- •Пул потоков clr
- •Библиотека Windows.Forms. Пространства имен. Структура приложения. Элементы управления. События. Иерархия элементов управления.
- •Основные пространства имен Windows Forms
- •Структура приложения WinForms
- •Элементы управления
- •События
- •Библиотека wpf. Отличия wpf от WindowsForms. Разметка xaml. Понятие Windows Presentation Foundation
- •Типы приложений wpf
- •Основные сборки wpf
- •Построение приложения wpf без xaml
- •Построение приложения wpf с использованием только xaml
- •Пример c# обработчика события для контрола, объявленного в xaml (связь кода и xaml):
- •Создание проекта
- •Знакомство с инструментами визуального конструктора wpf
Основные члены типа DataRow:
HasErrors |
Есть ли ошибки в строке |
GetColumnsInError() |
Ошибочные столбцы |
GetColumnError() |
Описание ошибки для столбца |
ClearErrors() |
Удалить информацию об ошибках |
RowError |
Текстовое описание ошибки для строки |
ItemArray |
Все значения столбцов строки в виде массива объектов |
RowState |
Текущее состояние DataRow в содержащем его DataTable (новый, измененный, не измененный или удаленный) |
Table |
Ссылка на объект DataTable, содержащий данный объект DataRow |
AcceptChanges() |
Фиксация всех изменений в данной строке |
RejectChanges() |
Отмена всех изменений в данной строке |
BeginEdit() |
Начинает операцию редактирования |
EndEdit() |
Заканчивает операцию редактирования |
CancelEdit() |
Отменяет операцию редактирования |
Delete() |
Помечает строку для удаления при вызове AcceptChanges() |
IsNull() |
Проверяет, содержит ли указанный столбец пустое значение |
Пример создания таблицы:
// создание столбцов:
DataColumn col1 = new DataColumn("IntField", typeof(int));
DataColumn col2 = new DataColumn("StrField", typeof(string));
// создание таблицы и добавление в нее столбцов:
DataTable table = new DataTable("TestTable");
table.Columns.Add(col1);
table.Columns.Add(col2);
// добавление строк в таблицу
DataRow row = table.NewRow();
row["IntField"] = 10;
row["StrField"] = "Hello!";
table.Rows.Add(row);
row = table.NewRow();
row["IntField"] = 20;
row["StrField"] = "Hello again!";
table.Rows.Add(row);
// создание DataSet и добавление в него таблицы
DataSet ds = new DataSet("TestDataBase");
ds.Tables.Add(table);
Работа с адаптерами данных:
Класс адаптеров данных применяется для заполнения наборов данных DataSet с помощью объектов DataTable; кроме того, они могут отправлять измененные DataTable назад в базу данных для обработки. В таблице перечислены основные члены базового класса DbDataAdapter, от которого порождаются все объекты адаптеров данных (например, SqlDataAdapter и OdbcDataAdapter).
Основные члены класса DbDataAdapter:
Fill() |
Выполняет команду SQL SELECT (указанную в свойстве SelectCommand) для запроса к базе данных и загрузки этих данных в объект DataTable |
SelectCommand InsertCommand UpdateCommand DeleteCommand
|
Содержат SQL-команды, отправляемые в хранилище данных при вызовах методов Fill() и Update()
|
Update() |
Выполняет команды SQL INSERT, UPDATE и DELETE (указанных свойствами InsertCommand, UpdateCommand и DeleteCommand) для сохранения в базе данных изменений, выполненных в DataTable |
Пример:
string connectionString =
@"Data Source=(local)\SQLEXPRESS;Initial Catalog=DataBase1";
// Создание адаптера данных и установка команды для Fill()
SqlDataAdapter adapter =
new SqlDataAdapter("SELECT * FROM Table1", connectionString);
// Создание объекта DataSet
DataSet ds = new DataSet("DataBase1");
// Чтение из базы данных таблицы Table1 в объект DataSet
adapter.Fill(ds, "Table1");
// вывод всех столбцов таблицы Table1
DataTable dt = ds.Tables["Table1"];
for ( int c = 0; c < dt.Columns.Count; c++ )
Console.Write(dt.Columns[c].ColumnName + "\t");
Console.WriteLine();
// Вывод содержимого таблицы Table1.
for ( int r = 0; r < dt.Rows.Count; r++ )
{
for ( int c = 0; c < dt.Columns.Count; c++ )
Console.Write(dt.Rows[r][c].ToString() + "\t");
Console.WriteLine();
}