c#与数据库的连接
我想知道保持数据库连接(System.Data.SqlClient.SqlConnection())处于打开状态是一个好主意,还是建议在使用后关闭连接,并在需要时再次打开?(注意:我的应用程序将连续运行数天/数月)。我有点迫不及待地想把它打开。哪一种解决方案更好?一般来说,用完后就处理掉,不要担心 默认情况下,ADO.NET实现,因此连接在后台保持打开状态,以避免因一直打开新连接而造成的性能损失c#与数据库的连接,c#,sqlconnection,C#,Sqlconnection,我想知道保持数据库连接(System.Data.SqlClient.SqlConnection())处于打开状态是一个好主意,还是建议在使用后关闭连接,并在需要时再次打开?(注意:我的应用程序将连续运行数天/数月)。我有点迫不及待地想把它打开。哪一种解决方案更好?一般来说,用完后就处理掉,不要担心 默认情况下,ADO.NET实现,因此连接在后台保持打开状态,以避免因一直打开新连接而造成的性能损失 关闭代码中的连接的另一个原因是:如果在不使用连接时与数据库服务器失去连接,则不会遇到错误,如果保持连
关闭代码中的连接的另一个原因是:如果在不使用连接时与数据库服务器失去连接,则不会遇到错误,如果保持连接打开,则可能会发生错误。通常,在完成连接后将其丢弃,不要担心 默认情况下,ADO.NET实现,因此连接在后台保持打开状态,以避免因一直打开新连接而造成的性能损失
关闭代码中连接的另一个原因是:如果在不使用连接时与数据库服务器失去连接,则不会遇到错误,如果保持连接打开,则可能会发生错误。如果需要,请打开连接,不要浪费资源;-) 如果需要,请打开连接,不要浪费资源;-) 您绝对应该尽可能晚地打开连接,并尽快关闭它们 但是,您不仅应该在完成后关闭它们:即使在密切相关的命令之间也应该关闭它们,如果有任何其他代码在其间运行的话。事实上,让我这样说:尽可能快、频繁地关闭ADO.NET连接对象。(也就是说,不要做明显愚蠢的事情来关闭显然不应该关闭的连接) 默认情况下,SQL Server的ADO.NET提供程序(以及大多数其他重要的提供程序)提供连接池。这实际上将为您管理这些连接的创建和破坏,但前提是您在完成后关闭它们 如果使用块将连接对象的创建和使用包装在
中,这很容易做到
using(SqlConnection conn = new SqlConnection(...))
{
///Open and use the connection
} //the 'using' causes it to automatically be closed.
你绝对应该尽可能晚地打开连接,并尽快关闭它们
但是,您不仅应该在完成后关闭它们:即使在密切相关的命令之间也应该关闭它们,如果有任何其他代码在其间运行的话。事实上,让我这样说:尽可能快、频繁地关闭ADO.NET连接对象。(也就是说,不要做明显愚蠢的事情来关闭显然不应该关闭的连接)
默认情况下,SQL Server的ADO.NET提供程序(以及大多数其他重要的提供程序)提供连接池。这实际上将为您管理这些连接的创建和破坏,但前提是您在完成后关闭它们
如果使用
块将连接对象的创建和使用包装在中,这很容易做到
using(SqlConnection conn = new SqlConnection(...))
{
///Open and use the connection
} //the 'using' causes it to automatically be closed.
我发现最后一个带有using
块的代码示例有误导性:using
不会。打开()
,也不会。关闭()
连接,这些操作仍然必须手动完成。using
语句会导致连接自动关闭。调用Dispose()
时,无需显式调用Close()
,这是使用构造的所做的。我发现最后一个带有using
块的代码示例有误导性:using
不会.Open()
,也不会.Close()
连接,这些操作仍然必须手动完成。using
语句会导致连接自动关闭。调用Dispose()
时,不需要显式调用Close()
,这就是使用构造的所做的。