何时关闭从Asp.net到Oracle数据库的连接

时间:2019-01-09 07:19:27

标签: android asp.net database oracle database-connection

我正在使用asp.net应用程序从oracle db检索我的数据,并将它们作为json返回以在我的android应用程序中使用它们。

我想知道是否必须打开,每次执行请求时都关闭与数据库的连接,还是最好一次打开连接并保持打开状态,因为我正在编程的应用程序将像打开24小时一样打开/ 7d。

我已经阅读了一些有关连接池的内容,但这让我有些困惑,

因为我不知道连接池是否会被使用,因为我使用移动应用程序询问我的asp.net应用程序。

预先感谢您的答复。

2 个答案:

答案 0 :(得分:1)

您有3个选择。

  1. 根据每个请求打开和关闭数据库。
  2. 在初始化时打开数据库,在Page_UnLoadOnError上关闭数据库
  3. 永远打开数据库,在回收时将其关闭。

我们从(1)开始,然后如果可以(2)进行优化,然后避免(3)。

为什么要避免使用3d选项,因为如果我们有许多池或线程,并且可能留下许多开放连接而最终没有其他可用空间,那么我们可能会在调用时结束冲突。

默认情况下,我们需要(1),因为我们总是需要一些额外的呼叫才能询问数据库中的内容-

我们用(2)进行了优化,因为在页面渲染时,我们通常需要一个以上的数据库调用-一个共享的开放连接(仅用于一个调用)可以稍微提高速度。

答案 1 :(得分:0)

我假设您的服务是无状态的。然后,在每个请求之后,连接将自动终止,并且仍清除内存中的所有内容(只要它不是静态的)。 但是,如果您使用using将您所做的所有事情包装在数据库中,那将更好。这将自动关闭所有连接并清除所有内容。例如=>

using (System.Data.IDbConnection con = DBFactory.CreateDbConnection(Session))
{
    using (System.Data.IDbCommand cmd = DBFactory.CreateDbCommand(con))
    {

当您有多个查询时,甚至可以执行此操作。如果要连接它们,则必须进行事务处理。即使关闭事务,事务也会使连接保持打开状态。 您不必担心速度,因为.Net在后台运行连接池,并且实际上并没有关闭连接。

希望对您有帮助!