Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Файлы конфигурации и гибкость приложений
Файлы конфигурации и гибкость приложений
Для повышения гибкости своих приложений ADO.NET вы можете на стороне клиента использовать файл *.config, в котором в рамках элемента ‹appSettings› можно указать пользовательские пары ключей и значений. Вспомните из главы 11, что пользовательские даяние можно прочитать программно с помощью типов из пространства имен System.Configuration. Предположим, что в файле конфигурации вы указали строки соединения и поставщика данных так, как показано ниже.
‹configuration›
‹appSettings›
‹add key="provider" value="SqlServer" /›
‹add key="cnStr" value="Data Source=localhost;uid=sa;pwd=;Initial Catalog=Pubs"/›
‹/appSettings›
‹/configuration›
В этом случае вы можете добавить в Main() строки, обеспечивающие программное чтение этих значении. В результате вы, по существу, создадите источник (т.е. генератор) поставщика данных. Вот как может выглядеть соответствующая модификация указанного метода.
static void Main(string[] args) {
// Чтение значения ключа provider.
string dpStr = ConfigurationManager.AppSettings["provider"];
DataProvider dp = (DataProvider)Enum.Parse(typeof(DataProvider), dpStr);
// Чтение значения cnStr.
string cnStr = ConfigurationManager.AppSettings["cnStr"];
// Получение соединения.
IDbConnection myCn = GetConnection(dp);
myCn.ConnectionString = cnStr;
}
Замечание. Тип ConfigurationManager появился в .NET 2.0. He забудьте также установить ссылку на компоновочный блок System.Configuration.dll и указать using для пространства имен System.Configuration.
Если предыдущий пример преобразовать в библиотеку программного кода .NET (а не в консольное приложение), вы получите возможность создать любое число клиентов, которые могут устанавливать свои соединения, используя различные уровни абстракции. Но чтобы построить действительно полезную библиотеку, реализующую возможности источника поставщика данных, вы должны также использовать объекты команд, объекты чтения данных, адаптеры данных и другие типы, связанные с обработкой данных. Хотя построить такую библиотеку программного кода будет не слишком сложно, для нее потребуется весьма большой по объему программный код. К счастью, что касается .NET 2.0, добрые люди из Редмонда уже встроили все необходимое в библиотеки базовых классов,
Исходный код. Проект MyConnectionFactory размещен в подкаталоге, соответствующем главе 22.
- Высокоуровневое определение ADO.NET
- Поставщики данных ADO.NET
- Дополнительные пространства имен ADO.NET
- Типы System.Data
- Интерфейсы и абстрактные поставщики данных
- Файлы конфигурации и гибкость приложений
- Модель источника поставщика данных .NET 2.0
- Элемент ‹connectionStrings›
- Установка базы данных Cars
- Связный уровень ADO.NET
- Работа с объектами чтения данных
- Изменение содержимого таблиц с помощью объектов команд
- Работа с объектами параметризованных команд
- Выполнение хранимых процедур с помощью DbCommand
- Асинхронный доступ к данным в .NET 2.0
- Несвязный уровень ADO.NET
- Роль DataSet
- Работа с DataColumn
- Работа с DataRow
- Работа с DataTable
- Сохранение DataSet (и DataTable) в формате XML
- Привязка DataTable к интерфейсу пользователя
- Работа с типом DataView
- Работа с адаптерами данных
- Обновление базы данных с помощью объекта адаптера данных
- Генерирование SQL-команд с помощью типов построителя команд
- Объекты DataSet с множеством таблиц и объекты DataRelation
- Возможности мастеров данных
- Резюме
- Повышение производительности приложений с помощью хранимых процедур
- Файлы базы данных InterBase
- Файлы *.GDB изнутри
- Хранение конфигурации в системном реестре
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Разработка приложений баз данных InterBase на Borland Delphi
- 12.2. Файлы конфигураци исервера
- 7.5 Программные интерфейсы приложений для адаптеров шины
- Создание рабочих областей для документов из приложений Microsoft Office 2007
- Как вернуть случайно удаленные файлы?
- Как записать файлы на компакт-диск?
- Как сделать, чтобы в папке сначала отображались самые новые файлы?