oracle连接生命周期
本文关键字:周期 生命 连接 oracle | 更新日期: 2023-09-27 18:18:46
我在我的DB应用程序上使用ODP
。我在ODP
上为我的应用程序创建了包装器类。它是一个以线性方式运行的桌面应用程序(用户在运行操作期间不能做任何其他操作)。GUI在操作期间被锁定)。考虑到这一点,我创建了一个OracleConnection
对象作为成员,并将其用于所有查询。但在我看来,最好的做法是使用这样的东西:
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = connection.CreateCommand();
command.CommandText = "mysp_GetValue";
command.CommandType = CommandType.StoredProcedure;
connection.Open();
object ret = command.ExecuteScalar();
}
在所有情况下(即使是线性执行)。
我必须这样使用还是单个OracleConnection
就足够了?
现在我正在调用我的包装器对象的连接,它在应用程序启动时调用m_OracleConnection.open(connectionString)
。但是,如果我为每个查询创建一个单独的连接,我将如何保持连接的状态?像bool m_IsConnected
这样的布尔值是否足够?
如果软连接或硬连接丢失,我该如何警告用户?
下面的重要问题是:ODP OracleConnection
实现连接池吗?如果它做(和许多ADO。. NET提供商做),那么"最佳实践"代码是绝对没问题;它可能看起来就像你正在打开一个连接,但是使用连接池,Open()
实际上是"从池中获取底层连接,或者在没有可用连接时连接"。Dispose()
(在using
的末尾)将底层连接释放回池。使用这种方法,那么就不需要来跟踪连接的状态—您让池来操心这些。
默认情况下,ODP中似乎启用了连接池,并使用连接字符串参数来调整它(源)