Я пытаюсь вызвать метод ExecuteNonQuery () двух разных объектов класса OracleCommand. Оба объекта используют один и тот же объект подключения, но имеют разные commandText и параметры. Я использую ODP.net, C # (.net 2.0 framework) и Oracle 10g.
Фрагмент кода выглядит следующим образом:
// OpenDatabaseConnection() methods checks and opens database connection
bool connectionOpened = OpenDatabaseConnection();
if (connectionOpened)
{
command.ExecuteNonQuery();
commitCommand.ExecuteNonQuery();
}
Перед выполнением двух вышеуказанных операторов я проверяю, открыто ли соединение или нет. Если оно не открыто, то я открываю соединение.
Моя проблема в том, что после выполнения command.ExecuteNonQuery();
соединение закрывается, и я получаю исключение «Соединение должно быть открыто для выполнения этой операции», когда элемент управления пытается выполнить второй оператор. Почему соединение закрывается автоматически после выполнения метода ExecuteNonQuery ()?
Может кто-нибудь сказать, пожалуйста, как справиться с этой ситуацией?
Во втором объекте команды я просто пытаюсь зафиксировать изменения, больше ничего. Как зафиксировать изменения без использования транзакций?
Заранее спасибо
**
EDIT
**
Просто хотел узнать, как лучше всего открывать и закрывать соединение? Должны ли мы открывать соединение для каждого ExecuteNonQuery (), ExecuteScalar () и т. Д. методы и закрыть соединение, пока сделано, или открыть соединение при запуске приложения и держать соединение открытым до конца приложения? Пожалуйста, просветите!