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这样的布尔值是否足够?

如果软连接或硬连接丢失,我该如何警告用户?

oracle连接生命周期

下面的重要问题是:ODP OracleConnection实现连接池吗?如果它(和许多ADO。. NET提供商),那么"最佳实践"代码是绝对没问题;它可能看起来就像你正在打开一个连接,但是使用连接池,Open()实际上是"从池中获取底层连接,或者在没有可用连接时连接"。Dispose()(在using的末尾)将底层连接释放回池。使用这种方法,那么就不需要来跟踪连接的状态—您让池来操心这些。

默认情况下,ODP中似乎启用了连接池,并使用连接字符串参数来调整它(源)