2007 г.
Марченко Антон Леонардович
Интернет-Университет Информационных Технологий, INTUIT.ru
Назад Оглавление Вперёд
DataSet в свободном полете
Листинг 7: html, txt
Естественно, что данная последовательность действий может повторяться сколь угодно много раз, пока не будут созданы и не заполнены все члены объекта DataSet
.
Далее будет рассмотрен пример использования объекта DataSet
для прочтения информации из текстового файла. При этом используется метод класса string Split()
, который обеспечивает выделение из исходной строки подстрок с их последующим преобразованием в символьные массивы. Критерием выделения подстроки является массив символов-разделителей или целочисленное значение, определяющее максимальную длину подстроки.
Применение класса DataSet
Листинг 8: html, txt
Подсоединенные объекты модели ADO .NET. Провайдеры
Поставщик данных для приложения (Провайдер) – объект, предназначенный для обеспечения взаимодействия приложения с хранилищем информации (базами данных).
Естественно, приложению нет никакого дела до того, где хранится и как извлекается потребляемая приложением информация. Для приложения источником данных является тот, кто передает данные приложению. И как сам этот источник эту информацию добывает – никого не касается.
Источник данных (Data Provider
) – это набор взаимосвязанных компонентов, обеспечивающих доступ к данным. Функциональность и само существование провайдера обеспечивается набором классов, специально для этой цели разработанных.
ADO .NET поддерживает два типа источников данных, соответственно, два множества классов:
SQL Managed Provider (SQL Server.NET Data Provider)
– для работы с Microsoft SQL Server 7.0 и выше. Работает по специальному протоколу, называемому TabularData Stream
(TDS) и не использует ни ADO, ни ODBC, ни какую-либо еще технологию. Ориентированный специально на MS SQL Server, протокол позволяет увеличить скорость передачи данных и тем самым повысить общую производительность приложения;ADO Managed Provider (OleDb.NET Data Provider)
– для всех остальных баз данных. Обеспечивает работу с произвольными базами данных. Однако за счет универсальности есть проигрыш по сравнению с SQL Server Provider
, так что при работе с SQL Server рекомендовано использовать специализированные классы.
В следующих разделах приводится описание составных элементов провайдера.
Connection
Объект – представитель класса Connection
представляет соединение с источником (базой) данных и обеспечивает подключение к базе данных. Visual Studio .NET поддерживает два класса:
SQLConnection
(обеспечивает подключение к SQL Server 7.0 и выше),OleDbConnection
(обеспечивает подключение к прочим вариантам БД).
Компонента Connection
(независимо от того, представителем какого класса она является) имеет свойство ConnectionString
, в котором фиксируется вся необходимая для установления соединения с БД информация. Кроме того, поддерживается ряд методов, позволяющих обрабатывать данные с применением транзакций.
Свойства объекта Connection
позволяют:
- задавать реквизиты пользователя;
- указывать расположение источника данных.
Методы объекта позволяют управлять соединением с источником данных.
В процессе соединения с помощью объекта – представителя класса OleDbConnection
(аналогично SQLConnection) создается и инициализируется соответствующий объект с использованием одного из вариантов конструктора и строки соединения.
Формирование строки и последовательность действий при инициализации объекта соединения – дело техники. Главное – это чтобы свойство ConnectionString
в результате получило бы ссылку на строку символов, содержащую необходимую для установления соединения информацию.
Листинг 9: html, txt
Свойства, методы и события класса OleDbConnection
СвойстваConnectionString | string | Строка, определяющая способ подключения объекта к источнику данных |
ConnectionTimeout | Int32 | Интервал времени, в течение которого объект пытается установить соединение с источником данных (только для чтения) |
Container | string | Get . Возвращает объект IContainer , который содержит объект Component |
Database | string | Gets текущей базы данных или базы, которая использовалась после установления соединения |
DataSource | string | Get . Имя сервера или имя файла-источника данных. Все зависит от того, с каким хранилищем информации ведется работа. Серверное хранилище данных (SQL Server, Oracle) – имя компьютера, выступающего в роли сервера. Файловые БД (Access) – имя файла |
Provider | string | Gets имя OLE DB провайдера, которое было объявлено в "Provider= ... " clause строки соединения |
ServerVersion | string | Get . Строка с информацией о версии сервера, с которым было установлено соединение |
Site | string | Get или set . Объект ISite с информацией о функциональных возможностях узла |
State | string | Gets текущее состояние соединения |
Текущее состояние соединения кодируется как элемент перечисления ConnestionState
. Список возможных значений представлен ниже.
Имя члена | Описание | Value |
---|
Broken | Соединение с источником данных разорвано.Подобное может случиться только после того, как соединение было установлено. В этом случае соединение может быть либо закрыто, либо повторно открыто | 16 |
Closed | Соединение закрыто | 0 |
Connecting | Идет процесс подключения (значение зарезервировано) | 2 |
Executing | Соединение находится в процессе выполнения команды (значение зарезервировано.) | 4 |
Fetching | Объект соединения занят выборкой данных (значение зарезервировано) | 8 |
Open | Соединение открыто | 1 |
Открытые методыBeginTransaction | Перегружен. Начинает транзакцию базы данных |
ChangeDatabase | Изменяет текущую базу данных для открытого OleDbConnection |
Close | Закрывает подключение к источнику данных. Это рекомендуемый метод закрытия любого открытого подключения |
CreateCommand | Создает и возвращает объект OleDbCommand , связанный с OleDbConnection |
CreateObjRef (унаследовано от MarshalByRefObject ) | Создает объект, который содержит всю необходимую информацию для конструирования прокси-сервера, используемого для коммуникации с удаленными объектами |
Dispose (унаследовано от Component ) | Перегружен. Освобождает ресурсы, используемые объектом Component |
EnlistDistributed | Зачисляет в указанную транзакцию в качестве |
Transaction | распределенной транзакции |
Equals (унаследовано от Object ) | Перегружен. Определяет, равны ли два экземпляра Object |
GetHashCode (унаследовано от Object ) | Служит хэш-функцией для конкретного типа, пригоден для использования в алгоритмах хэширования и структурах данных, например в хэш-таблице |
GetLifetimeService (унаследовано от MarshalByRefObject ) | Извлекает служебный объект текущего срока действия, который управляет средствами срока действия данного экземпляра |
GetOleDbSchemaTable | Возвращает сведения схемы из источника данных так же, как указано в GUID, и после применения указанных ограничений |
GetType (унаследовано от Object ) | Возвращает Type текущего экземпляра |
InitializeLifetimeService (унаследовано от MarshalByRefObject ) | Получает служебный объект срока действия для управления средствами срока действия данного экземпляра |
Open | Открывает подключение к базе данных со значениями свойств, определяемыми ConnectionString |
ReleaseObjectPoolOleDb Connection | Статический. Означает, что пул объектов может быть освобожден, когда последнее основное подключение будет освобождено |
ToString (унаследовано от Object ) | Возвращает String , который представляет текущий Object |
Защищенные методыDispose | Перегружен. Переопределен. Освобождает ресурсы, используемые объектом OleDbConnection |
Finalize (унаследовано от Component ) | Переопределен. Освобождает неуправляемые ресурсы и выполняет другие действия по очистке, перед тем как пространство, которое использует Component , будет восстановлено сборщиком мусора. В языках C# и C++ для функций финализации используется синтаксис деструктора |
GetService (унаследовано от Component ) | Возвращает объект, представляющий службу, которую предоставляет Component или его Container |
MemberwiseClone (унаследовано от Object ) | Создает неполную копию текущего Object |
СобытияDisposed | Это событие сопровождает процесс удаления объекта |
InfoMessage | Некоторые СУБД (SQL Server) поддерживают механизм информационных сообщений. Это событие происходит при отправке провайдером некоторых сообщений |
StateChange | Возникает при изменении состояния соединения |
Назад Оглавление Вперёд