如果我们用c#中的实例实现sqlConnection对象是静态属性,会发生什么?

如果我们用c#中的实例实现sqlConnection对象是静态属性,会发生什么?,c#,C#,我真的很困惑,SqlConnection对象在使用后没有关闭,我们可能会遇到连接池的性能问题。我想做一个sqlConnection对象是一个静态变量,在抽象类中有实例 您应该使用块将其包装起来。这将自动处理sqlconnection。见正式文件 我想不出一个创建静态SqlConnection对象的好理由。没有理由在操作后保持连接处于活动状态您应该将其包装为using块。这将自动处理sqlconnection。见正式文件 我想不出一个创建静态SqlConnection对象的好理由。没有理由在操作后

我真的很困惑,SqlConnection对象在使用后没有关闭,我们可能会遇到连接池的性能问题。我想做一个sqlConnection对象是一个静态变量,在抽象类中有实例

您应该使用块将其包装起来。这将自动处理sqlconnection。见正式文件


我想不出一个创建静态SqlConnection对象的好理由。没有理由在操作后保持连接处于活动状态

您应该将其包装为using块。这将自动处理sqlconnection。见正式文件


我想不出一个创建静态SqlConnection对象的好理由。没有理由在操作后保持连接处于活动状态

相反,您可以创建一个静态的、长期的连接生成方法。这样您就可以简化它的使用,并从连接池中获益。当然,我们为什么不使用静态关键字呢。不使用连接轮询,而是建立多个连接对象。如果我使用静态关键字。我会在db操作完成后关闭连接,这样连接对象就不会太长了,我一直都听说这不是个好主意。快速搜索数据库连接的静态/单例使用是一个坏主意,它有一个MS链接的答案。@bradbury tq。但是我有一点困惑,在asp.net中,我可以使用任何应用程序(如windows)或控制台应用程序(如单线程应用程序)而不是使用静态连接。您可以创建静态连接生成方法,而不是创建静态的、长期的连接。这样您就可以简化它的使用,并从连接池中获益。当然,我们为什么不使用静态关键字呢。不使用连接轮询,而是建立多个连接对象。如果我使用静态关键字。我会在db操作完成后关闭连接,这样连接对象就不会太长了,我一直都听说这不是个好主意。快速搜索数据库连接的静态/单例使用是一个坏主意,它有一个MS链接的答案。@bradbury tq。但是我有一点困惑,在asp.net中不使用静态,我可以使用任何像windows这样的应用程序吗,或者控制台应用程序只同步进程,就像单线程应用程序一样。当我们在实例中连接对象c#代码时,内部执行一些功能,如打开sql会话窗口,并通过网络连接到sql server。我不在乎连接的打开和关闭。当垃圾收集器处理我们不知道的连接对象时,我想让单个连接对象通过网络与sql server交互垃圾收集器不会删除静态对象。。。这个问题在StackOverflow的其他位置被问到。垃圾收集器不会处理静态对象,这就是为什么要限制sql连接对象的多个实例。sql连接对象的关键字保持为static。对于每个从客户端发出请求的应用程序,我们可能与数据库交互,也可能不与数据库交互,但大多数情况下,我们与数据库交互,所以在什么时候用户注销我将处理sqlconnection对象。我在考虑记忆方面,保持静态关键字是一个很好的做法。如果我为sql连接保留static关键字,那么缺点是@siva正好相反。您将有一个SqlConnection,其基础连接已关闭,但作为静态SqlConnection将在内存中有一些位,因为。。。它是静态的,调用
new
会保留内存(除非在手动处理后将其分配为null),而我们正在实例连接对象c#code内部执行一些功能,如打开sql会话窗口并通过网络连接到sql server。我不在乎连接的打开和关闭。当垃圾收集器处理我们不知道的连接对象时,我想让单个连接对象通过网络与sql server交互垃圾收集器不会删除静态对象。。。这个问题在StackOverflow的其他位置被问到。垃圾收集器不会处理静态对象,这就是为什么要限制sql连接对象的多个实例。sql连接对象的关键字保持为static。对于每个从客户端发出请求的应用程序,我们可能与数据库交互,也可能不与数据库交互,但大多数情况下,我们与数据库交互,所以在什么时候用户注销我将处理sqlconnection对象。我在考虑记忆方面,保持静态关键字是一个很好的做法。如果我为sql连接保留static关键字,那么缺点是@siva正好相反。您将有一个SqlConnection,其基础连接已关闭,但作为静态SqlConnection将在内存中有一些位,因为。。。它是静态的,调用
new
会保留内存(除非手动处理后将其赋值为null)
using(var connection = new SqlConnection("connectionstring")
{ do stuff }