c#与数据库的连接

c#与数据库的连接,c#,sqlconnection,C#,Sqlconnection,我想知道保持数据库连接(System.Data.SqlClient.SqlConnection())处于打开状态是一个好主意,还是建议在使用后关闭连接,并在需要时再次打开?(注意:我的应用程序将连续运行数天/数月)。我有点迫不及待地想把它打开。哪一种解决方案更好?一般来说,用完后就处理掉,不要担心 默认情况下,ADO.NET实现,因此连接在后台保持打开状态,以避免因一直打开新连接而造成的性能损失 关闭代码中的连接的另一个原因是:如果在不使用连接时与数据库服务器失去连接,则不会遇到错误,如果保持连

我想知道保持数据库连接(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()
,这就是使用
构造的
所做的。