我正在尝试调用 OracleCommand 类的两个不同对象的 ExecuteNonQuery() 方法。这两个对象使用相同的连接对象,但具有不同的 commandText 和参数。我正在使用 ODP.net、C#(.net 2.0 框架)和 Oracle 10g。
代码片段如下:
// OpenDatabaseConnection() methods checks and opens database connection
bool connectionOpened = OpenDatabaseConnection();
if (connectionOpened)
{
command.ExecuteNonQuery();
commitCommand.ExecuteNonQuery();
}
在执行以上两个语句之前,我正在检查连接是否打开。如果它没有打开,那么我正在打开连接。
我的问题是,在 command.ExecuteNonQuery();
被执行后,连接被关闭,当控件尝试执行第二条语句时,我得到“连接必须打开才能执行此操作”的异常。为什么执行ExecuteNonQuery()方法后连接自动关闭?
谁能告诉我如何解决这种情况? 在第二个命令对象中,我只是想提交更改,没有别的。如何在不使用事务的情况下提交更改?
提前致谢
**
EDIT
** 只是想知道,打开和关闭连接的最佳做法是什么?我们应该在每个 ExecuteNonQuery()、ExecuteScalar() 等处打开连接吗?方法并在应用程序启动时关闭连接或在应用程序启动时打开连接并保持连接打开直到应用程序结束?请指教!!
最佳答案
How to commit changes without using transactions?
这没有任何意义。如果您没有明确使用事务,则会自动提交更改。
关于c# - 如何使用单个连接执行两个 command.ExecuteNonQuery() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3667362/