- •Организация c#-системы ввода-вывода: байтовые и символьные потоки. Встроенные потоки.
- •Классы потоков. Класс Stream. Классы байтовых потоков. Классы символьных потоков. Классы двоичных потоков.
- •1.5. Классы символьных потоков:
- •1.6. Классы двоичных потоков:
- •Класс FileStream и файловый ввод-вывод на побайтовой основе. Открытие и закрытие файла. Запись данных в файл. Считывание байтов из объекта класса FileStream.
- •Файловый ввод-вывод с ориентацией на символы. Использование класса StreamWriter. Использование класса StreamReader.
- •Считывание и запись двоичных данных. Класс BinaryWriter. Класс BinaryReader.
- •Наиболее важные методы выходного потока BinaryWriter:
- •Навигация по файловой системе: классы для работы с файловой системой.
- •Получение сведений о файле; копирование файлов; перечисление файлов в папке; изменение расширения файлов.
- •5.3. Изменение расширения файлов
- •Основы организации потоков. Потоки и многозадачность.
- •Пространство имен System.Threading. Класс Thread. Создание потока.
- •Создание потока. Чтобы создать поток, необходимо создать объект типа Thread. В классе Thread определен следующий конструктор: public Thread(ThreadStart entryPoint),
- •Приоритет потоков. Класс Thead поддерживает установку и получение приоритета потока. Для этого используется перечисление ThreadPriority. Его значения:
- •Использование нескольких потоков. Планирование потоков, приоритеты потоков. Можно создавать в программе несколько дочерних потоков.
- •Создать статический метод SimpleWork() в классе MultiThread (перед методом Main), который выводит на экран Id-номер каждого потока:
- •Проблемы одновременности и синхронизации потоков. Общий доступ к данным из разных потоков, предотвращение коллизий.
- •Синхронизация доступа к общим данным с помощью блокировок.
- •2) Выполнить блокировку операторов в ранее используемых методах SimpleWork и run:
- •Управление временем существования потоков.
- •Краткий обзор ado.Net. Три стороны технологии ado.Net. Пространство имен System.Data.
- •2.2 Три стороны технологии ado.Net
- •15.Поставщики данных ado.Net. Поведение объектов подключения.
- •Объектная модель ado.Net.
- •Создание соединения с источником данных. Члены типа dbConnection. Обработка исключений при работе с ms sql
- •Конструкторы
- •Свойства
- •События
- •Конструкторы
- •Свойства
- •Выборка, добавление, удаление и обновление данных с помощью sql-запросов на подсоединенном уровне.
- •Вывод информации с использованием объекта чтения данных: создание SqlDataReader; чтение данных из DataReader; чтение полей из текущей записи; закрытие DataReader.
- •Сравнение DataReader и DataSet:
- •Чтение данных из DataReader:
- •Организация хранения данных. Объект DataSet.
- •Строки: объект DataRow.
- •Конструкторы:
- •Свойства
- •Передача данных между источником данных и объектом DataSet. Обновление базы данных с помощью адаптера данных.
Конструкторы
SqlCommand() – инициализирует новый экземпляр класса SqlCommand.
SqlCommand(String) – инициализирует новый экземпляр класса SqlCommand с текстом запроса.
SqlCommand(String, SqlConnection) – инициализирует новый экземпляр класса SqlCommand текстом запроса и подключением SqlConnection.
SqlCommand(String, SqlConnection, SqlTransaction) – инициализирует новый экземпляр класса SqlCommand с текстом запроса, подключением SqlConnection и транзакцией SqlTransaction.
Свойства
1) Connection – подключение к базе данных. Можно использовать как существующее подключение, так и создавать новое.
2) CommandType – тип команды (запроса), который будет направляться к базе данных. Возможны следующие значения:
Text. Текстовая команда состоит из SQL-конструкции, направляемой к базе данных. Это значение используется по умолчанию.
StoredProcedure. Текстовая команда состоит из названия хранимой проце дуры.
TableDirect. Текстовая команда состоит из названия таблицы базы данных. В результате извлекается все содержимое таблицы. Эта команда аналогична текстовой команде SELECT * FROM Название_таблицы. Данная команда поддерживается только управляемым поставщиком OLE DB.
3) CommandText – собственно сам текст запроса. Он возвращает или задает инструкцию Transact_SQL, имя таблицы или хранимую процедуру, выполняемую для источника данных. (Переопределяет DbCommand.CommandText.)
4) CommandTimeout – возвращает или задает время ожидания перед завершением попытки выполнить команду и созданием ошибки.
5) Parameters – получает объект-коллекцию типов SqlParameterCollection, используемых для параметризованного запроса.
6) Transaction – получает или задает объект SqlTransaction, в рамках которого выполняется команда SqlCommand.
Методы
Cancel – пытается отменить выполнение SqlCommand. (Переопределяет DbCommand.Cancel().)
Clone – создает новый объект SqlCommand, являющийся копией текущего экземпляра.
CreateParameter – создает новый экземпляр объекта SqlParameter.
Dispose() – освобождает все ресурсы, используемые объектом Component. (Унаследовано от Component.)
GetType – возвращает объект Type для текущего экземпляра. (Унаследовано от Object.)
ExecuteReader() – Возвращает объект SqlDataReader поставщика данных для доступа к соответствующим данным в режиме однонаправленного чтения.
ExecuteNonQuery() –Направляет текст Sql-команды в хранилище данных.
2.2 Объект Command. Создание и инициализация. При определении объектов ADO .NET DataAdapter был назван адаптером, преобразователем, предназначенным для взаимодействия с базой данных. Это действительно так, однако если рассматривать взаимодействие с базой данных более глубоко, то выясняется, что в ADO .NET есть специализированный объект для выполнения запросов, называемый Command. Под запросами понимается выполнение SQL-конструкций или запуск хранимых процедур. Этот объект среда создает неявным образом в методе InitializeComponent.
Следует понимать, что в этот момент непосредственно SQL-запросы не предъявлены базе данных. Здесь только лишь подготовлены объекты команд для использования в будущем.
После создания активного соединения и SQL-команды следующим шагом является предъявление запроса источнику данных.
2.3 Командная строка SQL-запроса CommandText. Для извлечения таблиц и содержащихся в них данных используются SQL-запросы. Переменная CommandText содержит в себе SQL-запрос, синтаксис которого адаптирован для данного поставщика данных. Мы можем управлять извлечением данных, изменяя строку CommandText. Например, если на экранной форме приложения столбец «Код туриста» отображать не нужно, то SQL-запрос будет выглядеть следующим образом:
string CommandText = "SELECT Фамилия, Имя, Отчество FROM Туристы";
Выведем теперь все записи клиентов, имена которых начинаются на "О": string CommandText = "SELECT Фамилия, Имя, Отчество FROM Туристы where Имя like 'О%'";
Можно использовать все возможности языка манипулирования данными (DML) SQL для отбора данных и модификации строки CommandText для получения нужного результата.
