Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 创建和使用ODP.NET连接的最佳方法_Vb.net_Oracle_Odp.net - Fatal编程技术网

Vb.net 创建和使用ODP.NET连接的最佳方法

Vb.net 创建和使用ODP.NET连接的最佳方法,vb.net,oracle,odp.net,Vb.net,Oracle,Odp.net,我试图了解创建和使用ODP.NET连接的最有效但可维护的方法是什么 我在VB.NET中编写使用ODP.NET的函数的标准方法如下: Function GetDataTable() As DataTable Using Connection = New OracleConnection(connectionStringNHH) Using Command As OracleCommand = Connection.CreateCommand() U

我试图了解创建和使用ODP.NET连接的最有效但可维护的方法是什么

我在VB.NET中编写使用ODP.NET的函数的标准方法如下:

Function GetDataTable() As DataTable

    Using Connection = New OracleConnection(connectionStringNHH)
        Using Command As OracleCommand = Connection.CreateCommand()
            Using DataAdapter As New OracleDataAdapter()

                'Do stuff, fill dt

            End Using
        End Using
    End Using

    Return dt

End Function
但是,根据Oracle文档:

登录和注销数据库是一项极其耗费资源的操作[]

每次调用此函数时,是否创建和处理连接对象都会登录和注销数据库,或者会话是否以某种方式在应用程序范围内保持


如果不是,我应该通过我的应用程序使用公共连接对象吗?对于我来说,这似乎是一种糟糕的做法,原因有很多。

默认情况下,您在OracleConnection中获得了一个连接池。连接生存期和与数据库打开的相应会话将由池控制。有关所有详细信息,请参见ODP.NET文档

最佳做法是确保这些连接和其他oracle对象被关闭和处置

下面是一个最佳实践幻灯片组,它将有助于:


这是正确的做法。除非您更改设置,否则连接池将解决此问题。ADO.NET通常会使实际的数据库连接位于较低级别,并且在您关闭高级连接后,它将保持打开状态一段时间。谢谢。这是我的感觉,但找不到任何明确说明这一点的文档(可能是一些劣质的google fu)。不要公开任何oracle对象…一旦你公开了它们,它们将跨越程序集边界,然后更改数据库引用将成为一个令人头痛的问题…如果您需要公开对象…公开它们的底层接口以获得此有用的链接。