[英]OracleConnection life cycle
我在数据库应用程序上使用ODP
。 我为应用程序在ODP
创建了包装器类。 它是一个桌面应用程序,它以线性方式运行(用户在运行操作期间无法执行任何其他操作。GUI在操作期间被锁定)。 考虑到这一点,我创建了一个OracleConnection
对象作为成员,并将其用于所有查询。 但是,正如我所见,最佳实践是使用sth。 喜欢:
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默认情况下启用了连接池,并使用连接字符串参数对其进行了调整( source )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.