Можно ли вызывать OracleConnection.Open (), если соединение уже открыто? - PullRequest
3 голосов
/ 27 марта 2012

IOW, есть стандартный способ тестирования для этого, а-ля:

if (! con.Open())
  con.Open();

UPDATE: Думаю, я не упомянул, что это компоненты Oracle ODP, которые я использую. Компонент OracleConnection не имеет свойства ConnectionState.

Ответы [ 3 ]

11 голосов
/ 27 марта 2012

Используйте свойство Connection.State , чтобы проверить, открыто ли уже соединение

if(con.State == ConnectionState.Closed){
  con.Open();
}
4 голосов
/ 27 марта 2012
if(Con.State != ConnectionState.Open)
con.Open(); 

если вы хотите открывать только закрытые соединения, вы можете использовать

if(Con.State == ConnectionState.Close)
con.Open(); 

ConnectionState: http://msdn.microsoft.com/en-us/library/system.data.connectionstate.aspx

1 голос
/ 28 марта 2012

Вам нужно разделить ваш код на отдельные слои, чтобы избежать этого.Соединение следует открывать только в основном методе (в API - не в основном методе приложения), а затем переходить к координирующим (частным) методам, которые просто используют соединение без управления соединением (открытие, закрытие, операции транзакций и т. Д.).).Это обеспечивает чистоту вашего кода и безопасность ваших транзакций / соединений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...