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 | Возникает при изменении состояния соединения |
Назад Оглавление Вперёд