В программе несколько форм и каждой так или иначе нужна БД (через класс посредник) для наполнения или записи полученных данных.
Вопрос в том, как организовать работу с БД. В смысле подключения. Каждый раз для команды делать новое подключение. Держать один экземпляр в рамках класса посредника. Или иметь только одно соединение на все приложение и обращаться к БД через него.
Сейчас у меня третий вариант. Но выходит запутанная штука. Будто создаешь еще одну надстройку над OleDbConnection. По сути, с теми же методами. Только возвращающими результаты от оригинального OleDbConnection.
UPDATA:
Нашел следующую вещь (на msdn)
Поставщик данных .NET Framework для OLE DB автоматически создает пулы соединений, используя пулы сеанса OLE DB.
Выходит можно и нужно делать новое соединение каждый раз? Если есть автоматический пул. Правда непонятно, надо ли что-то явно указывать для этого.
Вот что выяснил.
чтобы осуществлять связь между базой данных и приложением на C# необходим посредник. И именно таким посредником является технология ADO.NET (источник)
в ADO.NET используется механизм пула подключений (источник)
ADO.NET работает с OleDb (источник)
И наконец, по примеру источника проделал массовое открытие-закрытие в цикле и делал снимок памяти. Как и утверждает цитата в UPDATE моего вопроса - пул создается автоматически. Как только вы изменяете строку подключения - создается новый пул. Подробнее по источнику из первого предложения.
static void Main(string[] args)
{
string connectionString =
"Provider = Microsoft.ACE.OLEDB.12.0; Data Source=Название.accdb";
for (int i = 1; i < 6; i++)
{
using (OleDbConnection connection = new
OleDbConnection(connectionString))
{
connection.Open();
Console.WriteLine(String.Format("{0}) {1}", i, connection.State));
}
Console.Write("Pause");
Console.ReadLine();
}
using (OleDbConnection connection =
new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source=ДругоеНазвание.accdb"))
{
connection.Open();
Console.WriteLine(String.Format("{0}) {1}",
"Другая строка подключения:", connection.State()));
}
Console.Read();
}
Согласно коду, после каждого закрытия (благодаря using) была пауза. В которую я делал снимок памяти. Пока строка подключения не меняется, используются те же ресурсы. Как только поменяли строку подключения, резкий скачек (создалось новое подключение и новый пул).
Поэтому, буду создавать новое подключение для каждой команды. Поскольку моя строка подключения не изменится в течении сеанса программы. Для извлечения строки подключения использую параметры уровня приложения (источник).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Столкнулся со странной ошибкойЕсть кнопка button, и событие Click для неё