открывать / закрывать соединение оракула несколько раз c # - PullRequest
0 голосов
/ 11 января 2019

В своей бизнес-логике я использую несколько запросов оракула несколько раз. Как лучше всего открыть и закрыть соединение оракула?

private void update()
{
     OracleConnection con = new OracleConnection("Connection Statement");
     OracleCommand command = new OracleCommand("Select Statement");
     con.Open();
     OracleDataReader reader = command.ExecuteReader();

     reader.Close();
     con.Close();

     // A for loop

     con.Open();
     command = new OracleCommand("Update statement");
     command.ExecuteNonQuery();
     con.Close();

     con.Open();
     command = new OracleCommand("Second Update statement");
     command.ExecuteNonQuery();
     con.Close();
}

Мой код выглядит следующим образом. Должен ли я открывать и закрывать соединение оракула для каждой команды или открывать перед первой командой и закрывать после последней команды.

P.S. Эта функция обновления вызывается более 100 раз в моем приложении.

1 Ответ

0 голосов
/ 11 января 2019

Поскольку соединение является локальным для метода, создайте его в блоке using и затем используйте его столько раз, сколько вам нужно в этом блоке. Блок может содержать циклы или что-то еще, не существует правила, которое гласит, что вы должны сбросить соединение после того, как используете его один раз.

Однако общий доступ к соединению не рекомендуется, поэтому не создает экземпляр уровня класса или статический экземпляр для совместного использования.

private void update()
{
     using(OracleConnection con = new OracleConnection("Connection Statement"))
     {
         con.Open();
         using(var command = new OracleCommand("Select Statement", con))
         using(OracleDataReader reader = command.ExecuteReader()}
         {

         }

         // A for loop

         using(var command = new OracleCommand("Update statement", con))
         {
           command.ExecuteNonQuery();
         }

         using(var command = new OracleCommand("Second Update statement", con))
         {
           command.ExecuteNonQuery();
         }
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...