Рабочий пример источника поставщика данных

Рабочий пример источника поставщика данных

Давайте построим консольное приложение (с именем DataProviderFactory), которое будет печатать имена и фамилии авторов из таблицы Authors базы данных Pubs, создаваемой при установке Microsoft SQL Server (Pubs представляет собой пример базы данных вымышленной издательской компании).

Сначала укажите ссылку на компоновочный блок System.Configuration.dll, добавьте в текущий проект файл арр.config и определите элемент ‹appSettings›. Помните о том, что "официальным" форматом значения поставщика является полное имя пространства имен поставщика данных, а не такое фиктивное имя, как то, которое использовалось выше в примере MyConnectionFactory.

‹configuration›

 ‹appSettings

  ‹!-- Какой поставщик? --›

  ‹add key="provider' value="System.Data.SqlClient" /›

  ‹!-- Какая строка соединения? --›

  ‹add key="cnStr" value="Data Source=localhost;uid=sa;pwd=;Initial Catalog=Pubs"/›

 ‹/appSettings›

‹/configuration›

Теперь, когда у вас есть соответствующий файл *.config, вы можете прочитать из него значения provider и cnStr, используя метод ConfigurationManager.AppSettings(). Значение provider будет передано методу DbProviderFactories.GetFactory(), чтобы получить специфичный для данного поставщика тип источника данных. Значение cnStr будет использоваться для установки свойства ConnectionString типа DbConnection. В предположении о том, что вы: указали using для пространств имен System.Data и System.Data.Common, обновите метод Main() так, как показано ниже.

static void Main(string[] args) {

 Console.WriteLine("*** Источники поставщиков данных *** ");

 // Получение строк соединения и поставщика данных из файла *.config.

 string dp = ConfigurationManager.AppSettings("provider");

 string cnStr = ConfigurationManager.AppSettings("cnStr");

 // Создание источника поставщика.

 DbProviderFactory df = DbProviderFactories.GetFactory(dp);

 // Создание объекта соединения.

 DbConnection cn = df.CreateConnection();

 Console.WriteLine("Объект соединения: {0}", cn.GetType().FullName);

 cn.ConnectionString = cnStr;

 cn.Open();

 // Coздание объекта команды.

 DbCommand cmd = df.CreateCommand();

 Console.WriteLine("Объект команды: {0}", cmd.GetType().FullName);

 cmd.Connection = cn;

 cmd.CommandText = "Select * From Authors";

 // Вывод данных с помощью объекта чтения данных.

 DbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

 Console.WriteLine("Объект чтения данных: {0}", dr.GetType().FullName);

 Console.WriteLine(" ***** Авторы в Pubs *****");

 while(dr.Read()) Console.WriteLine("-› {0}, {1}", dr["au_lname"], dr["au_fname"]);

 dr.Close();

}

Здесь для проверки печатаются полные имена объекта соединения, объекта команды и объекта чтения данных. Запустив это приложение, вы обнаружите, что для чтения данных из таблицы Authors базы данных Pubs был использован поставщик Microsoft SQL Server (рис. 22.2).

Рис. 22.2. Получение поставщика данных SQL Server с помощью источника поставщика данных .NET 2.0

Далее, если вы измените файл *.config так, чтобы в нем для поставщика данных было указано System.Data.OleDb (и соответственно обновите строку соединения), как предлагается ниже:

‹configuration›

 ‹appSettings›

  ‹!-- Which provider? --›

  ‹add key="provider" value="System.Data.OleDb"/›

  ‹!-- Which connection string? --›

  ‹add key="cnStr" value="Provider=SQLOLEDB;Data Source=localhost;uid=sa;pwd=;Initial Catalog=Pubs" /

 ‹/appSettings›

‹/configuration›

то вы обнаружите, что теперь в фоновом режиме используются типы System.Data. OleDb (рис. 22.3).

Рис. 22.3. Получение поставщика данных OLE DB с помощью источника поставщика данных .NET 2.0

Конечно, не имея опыта работы с ADO.NET, вы можете иметь слабое представление о том, что именно делают объекты соединения, команды и чтения данных. Но не беспокойтесь до поры до времени о деталях (в конце концов, в этой главе еще немало страниц, а вам только предстоит их прочесть!). На данный момент важно только понять, что в .NET 2.0 вполне возможно построить единый базовый код, который сможет в декларативной форме принимать разных поставщиков данных.

Предложенная модель оказывается очень мощной, но вы должны убедиться в том, что ваш базовый программный код использует только те типы и методы, которые оказываются общими для всех поставщиков. Поэтому при создании общего программного кода ограничьте себя использованием членов, предлагаемых DbConnection.DbCommand и другими типами из пространства имен System.Data. Common. С другой стороны, вполне возможно, что такой "обобщённый" подход не позволит использовать некоторые специфические возможности конкретной СУБД, так что обязательно проверьте работоспособность создаваемого вами программного кода в реальных условиях.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Модель источника поставщика данных .NET 2.0

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Модель источника поставщика данных .NET 2.0 В .NET 2,0 предлагается модель источника поставщика данных, с помощью которой, используя обобщенные типы, можно построить единый базовый код для доступа к данным. Более того, используя файлы конфигурации приложения (в частности, их


6.1.7. Учебный пример: файлы данных Freeciv

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

6.1.7. Учебный пример: файлы данных Freeciv Игра Freeciv — стратегия с открытым исходным кодом, прообразом которой послужила классическая игра Civilization II Сида Мейера (Sid Meier). Игра состоит в том, что каждый участник, имея в своем распоряжении группу кочевников каменного века, строит


Настройка источника данных ODBC

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Настройка источника данных ODBC Для получения доступа к созданной DBF-таблице из сценария WSH мы воспользуемся технологией ODBC (Open DataBase Connectivity). ODBC — это стандартное средство Microsoft для работы с реляционными базами данных различных форматов и производителей, способное


Пример: использование указательных типов данных

Из книги Инфраструктуры открытых ключей автора Полянская Ольга Юрьевна

Пример: использование указательных типов данных Аргументом потока, передаваемым функции потока при вызове CreateThread и _beginthreadex (см. главу 7), является указатель типа PVOID. Иногда программист может захотеть передать функции потока только целочисленное значение, указывающее,


Лекция 19. Проблемы выбора поставщика технологии или сервисов PKI

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Лекция 19. Проблемы выбора поставщика технологии или сервисов PKI Подробно рассматриваются проблемы выбора поставщика технологии или сервисов PKI, формулируются основные критерии выбора, обсуждаются проблемы масштабируемости и безопасности PKI-решения, приводятся


Определение критериев выбора поставщика технологии или сервисов PKI

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

Определение критериев выбора поставщика технологии или сервисов PKI Эта лекция посвящена тем проблемам, которые необходимо рассмотреть перед развертыванием PKI. Ключ к принятию взвешенных решений - всестороннее изучение фактического состояния дел, а также требований


Финансовые возможности поставщика

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Финансовые возможности поставщика Всегда, особенно в период экономической нестабильности, важна устойчивость финансового положения поставщика, а также его способность адекватно реагировать на изменение технологических стандартов и требований заказчика. Независимо


Анализ возможностей поставщика

Из книги автора

Анализ возможностей поставщика В основном, лучший способ для организации сравнить возможности разных поставщиков - это предложить им участвовать в тендере и обратиться с просьбой подготовить свои предложения. Ниже содержатся рекомендации по составлению так


Выбор программного продукта или поставщика сервисов PKI

Из книги автора

Выбор программного продукта или поставщика сервисов PKI Следующий шаг - выбор программного продукта или поставщика сервисов PKI. При выборе должны быть учтены возможности функциональной совместимости с другими программными продуктами / поставщиками услуг, легкость


Пример базы данных

Из книги автора

Пример базы данных Везде в этой книге языковые примеры используют пример базы данных, которая находится в каталоге Examples в папке, где установлен Firebird. В дистрибутиве Firebird 1.0.x она называлась employee.gdb. В Firebird 1.5 это employee.fdb.Краткое описание примера базы данных содержится в


Приложение 6. Пример базы данных

Из книги автора

Приложение 6. Пример базы данных Пример базы данных инсталлируется вместе в Firebird в каталог /examples в корневом каталоге Firebird. В Firebird 1.0 это база данных диалекта 1, ее имя employee.gdb. В версии 1.5 она имеет диалект 3 и имя employee.fdb. Структурно это та же самая база данных.Эта база данных


29.3. DLPI: интерфейс поставщика канального уровня

Из книги автора

29.3. DLPI: интерфейс поставщика канального уровня SVR4 обеспечивает доступ к канальному уровню через DLPI (Data Link Provider Interface — интерфейс поставщика канального уровня). DLPI — это не зависящий от протокола интерфейс, разработанный в AT&T и служащий средством связи с сервисами,


31.6. TPI: интерфейс поставщика транспортных служб

Из книги автора

31.6. TPI: интерфейс поставщика транспортных служб На рис. 31.3 мы показали, что TPI — это интерфейс, предоставляющий доступ к транспортному уровню для расположенных выше уровней. Этот интерфейс используется в потоковой среде как сокетами, так и XTI. Из рис. 31.3 видно, что