
- •Организация 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. Обновление базы данных с помощью адаптера данных.
Создание соединения с источником данных. Члены типа dbConnection. Обработка исключений при работе с ms sql
1.1 Члены класса SqlConnection. Рассмотрим объект подключения к базе данных СУБД Microsoft SQL Server, т.е. класс SqlConnection. Он предоставляет открытое подключение к базе данных SQL Server и не наследуется. Класс SqlConnection предоставляет следующие члены:
Конструкторы
SqlConnection() – инициализирует новый экземпляр класса SqlConnection.
SqlConnection(String) – инициализирует новый экземпляр класса SqlConnection, получив строку подключения.
Свойства
CanRaiseEvents – возвращает значение, показывающее, может ли компонент вызывать событие. (Унаследовано от Component.)
ConnectionString – возвращает или задает строку, используемую для подключения к базе данных SQL Server. (Переопределяет DbConnection.ConnectionString.)
ConnectionTimeout – получает время ожидания при попытке установки подключения, по истечении которого попытка подключения завершается и создается ошибка. (Переопределяет DbConnection.ConnectionTimeout.)
Database – получает имя текущей базы данных или базы данных, которая будет использоваться после открытия подключения. (Переопределяет DbConnection.Database.)
DataSource – Имя или сетевой адрес экземпляра SQL Server, к которому осуществляется подключение. (Переопределяет DbConnection.DataSource.)
Events – возвращает список обработчиков событий, которые прикреплены к этому объекту Component. (Унаследовано от Component.)
Методы
BeginTransaction() – начинает транзакцию базы данных.
ChangeDatabase – изменяет текущую базу данных для открытого подключения SqlConnection. (Переопределяет DbConnection.ChangeDatabase(String).)
ChangePassword – заменяет пароль SQL Server для пользователя, указанного в строке подключения, заданным новым паролем.
Close – закрытие подключения к базе данных. Рекомендуется использовать этот метод для закрытия любого открытого подключения. (Переопределяет DbConnection.Close().)
CreateCommand – создает и возвращает объект SqlCommand, связанный с SqlConnection.
Dispose() – освобождает все ресурсы, используемые объектом Component. (Унаследовано от Component.)
GetSchema() – возвращает информацию схемы для источника данных этого объекта SqlConnection. (Переопределяет DbConnection.GetSchema().)
GetType – возвращает объект Type для текущего экземпляра. (Унаследовано от Object.)
Open – открывает подключение к базе данных со значениями свойств, определяемыми объектом ConnectionString. (Переопределяет DbConnection.Open().)
События
Disposed – происходит при удалении компонента вызовом метода Dispose. (Унаследовано от Component.)
1.2 Командная строка соединения ConnectionString. Явное управление соединением (с помощью строки соединения) обладает рядом преимуществ: дает более чистый и удобный для чтения код; помогает при отладке приложения; является более эффективным. Строка соединения ConnectionString определяет параметры, необходимые для установления соединения с источником данных. Каждый параметр оформляется как пара «имя-значение». Параметры разделяются точками с запятой.
Рассмотрим строки соединения, которые подключают базы данных BDTur_firm.mdb и BDTur_firmSQL.mdf.
// База данных BDTur_firm:
Provider=Microsoft.Jet.OLEDB.4.0;
Data Source="D:\ВМИ\For ADO\BDTur_firm.mdb" // путь к БД
// База данных BDTur_firmSQL.mdf:
Data Source=.\SQLEXPRESS;
AttachDbFilename="D:\ВМИ\For ADO\ BDTur_firmSQL.mdf";
Integrated Security=True;
Connect Timeout=30;
User Instance=True
В этих строках через точку с запятой просто перечисляются параметры соединения.
В таблице приводятся основные параметры строки соединения :
Параметр |
Описание |
Provider (Поставщик) |
Свойство применяется для установки или возврата имени поставщика для соединения, используется только для объектов OleDbConnection. |
Connection Timeout или Connect Timeout (Время ожидания связи) |
Длительность времени ожидания связи с сервером перед завершением попытки и генерацией исключения в секундах. По умолчанию 15. |
Initial Catalog (или AttachDbFilename) (Исходный каталог) |
Полное имя базы данных (“D:\Связный уровень\База данных\Friedens.mdf”) |
Data Source |
Имя используемого SQL-сервера, когда установлено соединение (.\SQLExpress), или имя файла базы данных Microsoft Access. |
Password (Пароль) |
Пользовательский пароль для учетной записи SQL Server. |
User ID (Пользовательский ID) |
Пользовательское имя для учетной записи SQL Server. |
Workstation ID |
Имя рабочей станции или компьютера. |
Integrated Security или Trusted Connection (Интегрированная безопасность, или Доверительное соединение) |
Параметр, который определяет, является ли соединение защищенным. True, False и SSPI – возможные значения (SSPI – эквивалент True). |
Persist Security Info (Удержание защитной информации)
|
Когда установлено False, нуждающаяся в защите информация, такая как пароль, не возвращается как часть соединения, если связь установлена или когда-либо была установленной. Выставление этого свойства в True может быть рискованным в плане безопасности. По умолчанию False. |
Строка соединений при использовании мастеров генерируется средой, но можно (и желательно – во избежание неточностей и ошибок) писать эту строчку вручную.
Для явного управления соединением используется объект Connection.
1.4 Обработка исключений при работе с MS SQL. Подключение к базе данных представляет собой одно из слабых мест в работе программы. В силу самых разных причин клиент может не получить доступ к базе данных. Поэтому при создании приложения следует обязательно включать обработку исключений и возможность предоставления пользователю информации о них.
Для получения специализированных сообщений при возникновении ошибок подключения к базе данных Microsoft SQL Server используются классы SqlException и SqlError. Объекты этих классов можно также применять для перехвата номеров ошибок, возвращаемых базой данных:
17 – Неверное имя сервера
4060 – Неверное название базы данных
18456 – Неверное имя пользователя или пароль
Дополнительно вводятся уровни ошибок SQL Server, позволяющие охарактеризовать причину проблемы и ее сложность:
Интервал возвращаемых значений |
Описание |
Действие |
11–16 |
Ошибка, созданная пользователем |
Пользователь должен повторно ввести верные данные. |
17–19 |
Ошибки программного обеспечения или оборудования |
Пользователь может продолжать работу, но некоторые запросы будут недоступны. Соединение остается открытым. |
20–25 |
Ошибки программного обеспечения или оборудования |
Сервер закрывает соединение. Пользователь должен открыть его снова. |
При возникновении исключительной ситуации при соединении с БД возникает исключение типа SqlException. Информация о возникших ошибках содержится в свойстве Errors, представляющем собой коллекцию объектов типа SqlError. Ошибка определяется целочисленным свойством Number, представляющим номер ошибки. Анализируя значение, можно определить причину возникновения ошибки и действия, которые необходимо предпринять для ее устранения.
Работа с базой данных с помощью SQL-запросов. Класс SqlCommand. Объект Command. Создание и инициализация. Командная строка SQL-запроса CommandText.
2.1 Класс SqlCommand. Компоненты данных ADO.NET в Visual Studio инкапсулируют функциональные возможности доступа к БД различными способами, что помогает разрабатывать программные продукты значительно быстрее и с меньшим количеством ошибок. Команды данных абстрагируют задачу построения и выполнения инструкций SQL или хранимых процедур.
Тип SqlCommand является объектным представлением SQL-запроса, имени таблицы или хранимой процедуры, выполняемой над базой данных SQL Server. Вид команды указывается с помощью его свойства CommandType: Text (по умолчанию), TableDirect, StoredProcedure. Класс SqlCommand предоставляет также инструкцию Transact_SQL.
При создании экземпляра SqlCommand свойствам чтения и записи задаются начальные значения. Этот класс не наследуется.
Класс SqlCommand содержит следующие члены: