我在asp.net页面上有一个数据库连接,我多次使用“using语句”。我为使用连接的每个方法使用它一次。我希望将这些语句减少到只有一个,这是出于性能原因(在同一页面上重新开始连接的感觉),并且因为它使代码更容易阅读。
这个想法是一个糟糕的编码标准吗?建议的方法是什么?
如果一个using语句就足够了 - 是否有一种很好的方法可以将整个页面封装在using语句中(不仅仅是在例如Page_Load中)?
答案 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
答案 1 :(得分:0)
您当前的方法被认为是最佳做法。您应该始终对实现using
的对象使用IDisposable
- 语句来尽快处置(+关闭)所有非托管资源 。方法是using
语句的良好范围。
请注意,如果您使用Connection-Pooling
(默认),则在致电Open
或Close
时,您无法打开/关闭连接。相反,如果关闭连接,则将连接标记为可用。因此,如果您不关闭连接,则连接池将不会重用此连接。相反,它必须打开一个非常昂贵的新物理连接。一旦达到最大连接数(定义为100),您甚至会得到一个例外。
实际上,大多数应用程序只使用一种或几种不同的应用程序 连接配置。这意味着在申请期间 执行时,将重复打开许多相同的连接 关闭。为了最大限度地降低打开连接的成本,ADO.NET使用了 优化技术称为连接池。
连接池减少了新连接的次数 必须打开。平民保持对物质的所有权 连接。它通过保持一组活动来管理连接 每个给定连接配置的连接。 每当一个用户 调用在连接上打开,pooler查找可用的 池中的连接。如果池连接可用,则为 将其返回给调用者而不是打开新连接。当。。。的时候 应用程序调用关闭连接,pooler将其返回 合并的一组活动连接而不是关闭它。一旦 连接返回到池中,它已准备好在池上重用 下一次公开电话。
答案 2 :(得分:-1)
e.g
public static void GetConnObj()
{
using (SqlConnection con = new SqlConnection("yourConnectionString"))
{
con.Open();
//other code here.
}
}