Читаем Язык программирования С# 2005 и платформа .NET 2.0. полностью

Давайте построим консольное приложение (с именем 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("*** Источники поставщиков данных ***\n");

 // Получение строк соединения и поставщика данных из файла *.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("\n***** Авторы в 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).

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

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

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT