多次使用using语句

时间:2013-06-17 12:48:19

标签: asp.net connection using-statement

我在asp.net页面上有一个数据库连接,我多次使用“using语句”。我为使用连接的每个方法使用它一次。我希望将这些语句减少到只有一个,这是出于性能原因(在同一页面上重新开始连接的感觉),并且因为它使代码更容易阅读。

这个想法是一个糟糕的编码标准吗?建议的方法是什么?
如果一个using语句就足够了 - 是否有一种很好的方法可以将整个页面封装在using语句中(不仅仅是在例如Page_Load中)?

3 个答案:

答案 0 :(得分:1)

经常打开和关闭数据库连接是一种很好的做法。 保持连接打开,直到您需要数据库访问,否则请尽快关闭它。

几个链接:

Good practice to open/close connections in an asp.net application?

Best practice? open and close multi connections, or one large open connection for ado.net

Using Connection Pooling - MSDN

答案 1 :(得分:0)

您当前的方法被认为是最佳做法。您应该始终对实现using的对象使用IDisposable - 语句来尽快处置(+关闭)所有非托管资源 。方法是using语句的良好范围。

请注意,如果您使用Connection-Pooling(默认),则在致电OpenClose时,您无法打开/关闭连接。相反,如果关闭连接,则将连接标记为可用。因此,如果您不关闭连接,则连接池将不会重用此连接。相反,它必须打开一个非常昂贵的新物理连接。一旦达到最大连接数(定义为100),您甚至会得到一个例外。

Connection-Pooling:

  

实际上,大多数应用程序只使用一种或几种不同的应用程序   连接配置。这意味着在申请期间   执行时,将重复打开许多相同的连接   关闭。为了最大限度地降低打开连接的成本,ADO.NET使用了   优化技术称为连接池。

     

连接池减少了新连接的次数   必须打开。平民保持对物质的所有权   连接。它通过保持一组活动来管理连接   每个给定连接配置的连接。 每当一个用户   调用在连接上打开,pooler查找可用的   池中的连接。如果池连接可用,则为   将其返回给调用者而不是打开新连接。当。。。的时候   应用程序调用关闭连接,pooler将其返回   合并的一组活动连接而不是关闭它。一旦   连接返回到池中,它已准备好在池上重用   下一次公开电话。

答案 2 :(得分:-1)

e.g

public static void GetConnObj()
    {
        using (SqlConnection con = new SqlConnection("yourConnectionString"))
        {
            con.Open();
            //other code here.
        }
    }