В приложении С# должно ли создаваться соединение с БД один раз или каждый раз, когда выполняется инструкция SQL?

В приложении С# следует ли создать OleDBConnection один раз или каждый раз, когда выполняется инструкция SQL?

Я смотрю код С#, написанный кем-то другим. Каждой инструкции SQL предшествует создание объекта OleDBConnection, строка подключения которого указывает на базу данных MDB.

Является ли целесообразным создание объекта OleDbConnection каждый раз, или если объект должен быть создан в начале приложения и использоваться с этого момента.

Ответ 1

Согласно Рекомендации по использованию ADO.NET:

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

Ответ 2

Предполагая, что пул соединений доступен для вашей базы данных, вероятно, вам нужно открыть и закрыть соединение для каждого вызова в вашу базу данных. Это позволяет использовать только конечный ресурс соединения с базой данных только тогда, когда вам это нужно, а затем вернуть его в пул для использования другими вызывающими абонентами, как только вы закончите делать вызов. Если вы подключитесь к соединению, вы скоро исчерпаете конечный ресурс, что будет общим доступным подключением к базе данных и, следовательно, серьезно затруднит масштабируемость и производительность вашего приложения.

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

  using (ODBCConnection c = new ODBCConnection(ConnectionString))
  {
    c.Command.CommandType = CommandType.Text;
    // make a call
  }

Наслаждайтесь!

Ответ 3

Это зависит от ситуации.

Если вы собираетесь выполнять несколько операторов в строке, то вам лучше работать с ними, чтобы открыть его один раз, выполнить все инструкции и затем закрыть его,

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

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

Опять же, этот фактор является вторичным по отношению к правильной работе и производительности, но все же что-то нужно учитывать в сложном приложении.

Основным фактором является то, как это повлияет на производительность по сравнению с косой для поддержания открытого соединения. Вы должны решить, что в каждой ситуации.

Ответ 4

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

Если на клиентском ПК есть функция интенсивного использования ЦП, вы должны выполнить эту задачу после того, как вы закрыли свое соединение, чтобы не связать соединение.

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

Ответ 5

Вы должны открывать соединение каждый раз, когда вам нужно что-то из db, и затем закрывать его. Оставьте в пуле соединений, чтобы решить, когда физически закрыть соединение.