Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Работа с объектами соединения
Работа с объектами соединения
Первым шагом в работе с поставщиком данных является создание соединения с источником данных, для чего мы используем объект соединения (который, как вы помните, получается из Disconnection). Типы соединения .NET получают на вход форматированную строку соединения, содержащую набор пар имен и значений, разделенных точками с запятой. Эта информация используется для идентификации машины, с которой требуется установить соединение, параметров безопасности, имени базы данных на удаленной машине и других данных, связанных с конкретным поставщиком данных.
По предыдущему программному коду вы можете заключить, что имя Initial Catalog (исходный каталог) дает ссылку на базу данных, с которой вы пытаетесь соединиться (Pubs, Northwind, Cars и т.д.). Имя Data Source (Источник данных) идентифицирует имя машины, поддерживающей базу данных (для простоты здесь предполагается, что для администраторов локальной системы никакого пароля не требуется).
Замечание. Чтобы узнать больше о парах имен и значений для той конкретной СУБД, которую используете вы, в документации .NET Framework 2.0 SDK найдите и прочитайте описание свойства ConnectionString объекта соединения для вашего поставщика данных.
После создания строки соединения само соединение с СУБД устанавливается с помощью вызова Open(). В дополнение к ConnectionString, Open() и Close() объект соединения предлагает еще целый ряд членов, которые позволяют настроить дополнительные параметры соединения, например, такие, как время ожидания и свойства транзакций. Описания некоторых членов базового класса DbConnection предлагаются в табл. 22.6.
Таблица 22.6. Члены типа DbConnection
Член | Описание |
---|---|
BeginTransaction() | Метод, используемый для начала транзакции |
ChangeDatabase() | Метод, используемый для смены базы данных при открытом соединении |
ConnectionTimeout | Доступное только для чтения свойство, возвращающее значение времени ожидания установки соединения, прежде чем будет сгенерирована ошибка (значением по умолчанию является 15 секунд). Чтобы изменить значение, используемое по умолчанию, укажите в строке соединения требуемое значение Connect Timeout (Например, Сonnect Timeout=30) |
Database | Свойство, сообщающее имя базы данных, используемой объектом соединения |
DataSource | Свойство, сообщающее информации о месте размещения базы данных, используемой объектом соединения |
GetSchema() | Метод, возвращающий объект DataSet, который содержит схему базы данных, полученную от источник данных |
State | Свойство, устанавливающее текущее состояние соединения в соответствии со значениями из перечня ConnectionState |
Как видите, свойства типа DbConnection в большинстве своем доступны только для чтения (в силу своей природы) и оказываются полезными только тогда, когда вы хотите получить характеристики соединений в среде выполнения. Чтобы переопределить значение, устанавливаемое по умолчанию, вы должны изменить строку соединения. Например, следующая строка соединения увеличивает время ожидания соединения с 15 до 30 секунд (путем указания соответствующего значения в сегменте Connect Timeout строки соединения).
static void Main(string[] args) {
SqlConnection cn = new SqlConnection();
cn.ConnectionString = "uid=sa;pwd=;initial Catalog=Cars;" +
"Data Source= (local);Connect Timeout = 30";
cn.Open();
// Новая вспомогательная функция (см. ниже).
ShowConnectionStatus(cn);
…
}
В этом фрагменте программного кода обратите внимание на то, что теперь объект соединения передается в виде параметра новому вспомогательному статическому методу ShowConnectionStatus() класса Program, реализованному так, как показано ниже.
static void ShowConnectionStatus(DbConnection cn) {
// Отображение информации о текущем объекте соединения.
Console.WriteLine("***** Информация о соединении *****");
Console.WriteLine("Размещение базы данных: {0}", cn.DataSource);
Console.WriteLine("Имя базы данных: {0}", cn.Database);
Console.WriteLine ("Время ожидания: {0}", cn.ConnectionTimeout);
Console.WriteLine("Состояние соединения: {0}n", cn.State.ToString());
}
Большинство указанных свойств самоочевидно, Но свойство State все же требует некоторого обсуждения. Этому свойству можно назначить любое значение из перечня ConnectionState
public enum System.Data.ConnectionState {
Broken, Closed,
Connecting, Executing,
Fetching, Open
}
но единственными действительными значениями ConnectionState являются ConnectionState.Open и ConnectionState.Closed (остальные члены этого перечня зарезервированы для использования в будущем). Также заметим, что вполне безопасно закрыть соединение, состоянием которого в настоящий момент является ConnectionState.Closed.
- Работа с ConnectionStringBuilder в .NET 2.0
- Генерирование SQL-команд с помощью типов построителя команд
- Работа с объектами команд
- Связный уровень ADO.NET
- 12.8. Работа с объектами
- Практическая работа 53. Запуск Access. Работа с объектами базы данных
- Глава 11. Соединения точка-точка и ретрансляторы
- Лекция 15. Работа с базами данных
- Работа с ресурсами локальной сети
- Эффективная работа с временными файлами сортировки
- Ускоренная работа с индексами
- HR-брендинг: Работа с поколением Y, новые инструменты для коммуникации, развитие корпоративной культуры и еще 9 эффектив...