我正在使用asp.net应用程序从oracle db检索我的数据,并将它们作为json返回以在我的android应用程序中使用它们。
我想知道是否必须打开,每次执行请求时都关闭与数据库的连接,还是最好一次打开连接并保持打开状态,因为我正在编程的应用程序将像打开24小时一样打开/ 7d。
我已经阅读了一些有关连接池的内容,但这让我有些困惑,
因为我不知道连接池是否会被使用,因为我使用移动应用程序询问我的asp.net应用程序。
预先感谢您的答复。
答案 0 :(得分:1)
您有3个选择。
Page_UnLoad
或OnError
上关闭数据库我们从(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在后台运行连接池,并且实际上并没有关闭连接。
希望对您有帮助!