Реклама:

• CurrentState - также значение перечисления ConnectionState - представляет новое состояние объекта sqlConnection, непосредственно после смены состояния.

Пример. Используя объект sqlConnection, создадим соединение и откроем его:

SqlConnection sqlConnectionl = new SqlConnection("..."); sqlConnection1.Open();

и затем, использовав где-либо, закроем:

sqlConnection1.Close();

Зададим следующий обработчик события смены состояния соединения:

private void sqlConnection1_StateChange(object sender,

System.Data.StateChangeEventArgs e) { MessageBox.Show("The current Connection state has changed from " + e.OriginalState + " to " + e.CurrentState);

}

При открытии соединения получим окно сообщения, показанное на рис. 2.10.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 2.10

При закрытии соединения выдается окно сообщения, показанное на рис. 2.11.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 2.11

2.1.10. Использование пула соединений

Соединение после своего закрытия в приложении не уничтожается, а попадает в пул - динамически разделяемую область памяти.

Когда то же или иное приложение снова открывает соединение с аналогичными параметрами (т. е. с такой же строкой соединения), то физически соединение с источником данных заново не устанавливается, а берется из пула.

Новое соединение создается, только когда свободных соединений с такими параметрами в пуле нет.

Когда взятое из пула соединение закрывается в приложении, оно вновь возвращается в пул.

Использование пулов позволяет обслуживать большее число пользователей в условиях ограниченного числа физических соединений с источником данных. Масштабируемость приложений при этом возрастает.

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

Для .NET-провайдера SQL Server пул создается для каждой разновидности строки соединений. При этом используется столь строгий алгоритм соответствия, что даже лишний пробел в идентичных строках соединения может привести к созданию нового пула.

Пример создания трех новых объектов SqlConnection, использующих два пула (строки первого и третьего соединения идентичны; они отличаются от строки третьего соединения атрибутом Initial Catalog). SqlConnection cn = new SqlConnection();

cn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=VUZ";

cn.Open();

// Создается пул A.

SqlConnection cn = new SqlConnection();

cn.ConnectionString = "Integrated Security=SSPI;Initial

Catalog=PAVLIK";

cn.Open();

// Создается пул B, поскольку строка соединения отличается от // первого.

SqlConnection cn = new SqlConnection();

cn.ConnectionString = "Integrated Security=SSPI;Initial Catalog=VUZ"; cn.Open();

// Строка соединения аналогична первому соединению и оттого попадает // в пул A.

В результате отработки приведенного выше кода будет создано два физических соединения. Первое будет использоваться первым и третим объектом SqlConnection, второе - вторым объектом SqlConnection.


⇐ Предыдущая страница| |Следующая страница ⇒