繁体   English   中英

OracleConnection生命周期

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM