Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Переподключение к БД FireBird


Автор: ivan215 2.10.2015, 21:08
Среда Visual Studio 2010, .NET 4, Visual Basic, ADO.NET провайдер

Не удается решить следующую проблему.

Подключаюсь к БД через FbConnection.Open

Получаю данные через FbDataAdapter

Удаляю и то и другое
FbConnection.Close
FbConnection.Dispose
FbDataAdapter.Dispose

И пытаюсь подключиться к другой базе, используя другую строку подключения НЕ ВЫХОДЯ из программы.

FireBird выдает ошибку подключения. Если перезапустить FireBird - все работает.

И еще. Несмотря на закрытие и удаление и FBConnection и FBDataAdapter - окно свойств FireBird показывает одно активное подключение, которое очищается ТОЛЬКО когда выхожу из программы.

Кто сталкивался подскажите, как решить проблему.

Автор: chupachups 3.10.2015, 19:19
Создание подключений к базам данных - ресурсоёмкая операция, поэтому подключения организуются в пул и несмотря на кажущее уничтожение объекта подключения - оно остается в пуле.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Perepodklyucheniye-k-BD-FireBird-id560ed704ae2015ba798b4567#findElement_E7045_56100019ae201524558b5341_0

Автор: ivan215 4.10.2015, 18:04
Цитата

несмотря на кажущее уничтожение объекта подключения - оно остается в пуле.


Да, про это я читал. Но Вы не ответили на поставленный вопрос - Как решить проблему.

В классе FBConnection провайдера ADO.NET FireBird-а есть два варианта очистки пула:

1. FbConnection.ClearPool(FB_Con)  Очистка одного пула, причем в качестве аргумента задается подключение (FB_Con As FbConnection). Вот здесь неясно. Можно подумать что под подключение FbCon выделяется отдельный пул. Это вряд ли. Тогда какой пул в данном случае очищается.

2. FbConnection.ClearAllPools - очищает все существующие пулы. Кстати вопрос, приводит ли это к отсоединению вообще всех подключенных пользователей. Мое переподключение к другой базе нив коем случае не должно затронуть остальных пользователей.

Так кто что может посоветовать.

Автор: chupachups 8.10.2015, 11:45
Пул один в пределах домена приложения и влияет только на конкретно работающее приложение на конкретном компьютере.
Подключения в пуле хранятся по ключу, ключ - строка подключения.
FbConnection.ClearPool(FB_Con) - удалит только подключение с указанной в FB_Con строкой подключения.
FbConnection.ClearAllPools - очисти весь пул - удалит все подключения.

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

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Perepodklyucheniye-k-BD-FireBird-id560ed704ae2015ba798b4567#findElement_E7045_56162d42ae201568668b4599_0

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)