0

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就足够了吗?

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

4

1 回答 1

1

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

看起来默认情况下在 ODP 中启用了连接池,并使用连接字符串参数来调整它(source

于 2013-06-17T11:18:32.190 回答