每个查询的新sql连接?

我正在编写一个与本地sql server通信的服务器应用程序。

每个客户端都需要读取或写入数据库。

拥有一个可以在单个sql连接上排队并执行sql命令的线程安全类会更好吗? 或者我应该为每个命令打开一个新连接? 性能是否重要?

如果您有一批必须在彼此之后执行的语句,则应使用相同的SqlConnection。 只要您不再需要SqlConnection,并且您不知道何时需要再次连接,就应该关闭连接。

因此,例如,如果必须在彼此之后执行2个insert语句和一个update语句,则应使用相同的SqlConnection。
这里最重要的优点是,如果需要,您可以将这些语句放在事务中。 无法通过连接共享事务。

使用完DB后,可以关闭连接。 默认情况下,使用连接池,并且连接将返回到池,以便下次需要连接到DB时可以重用它。 连接生命周期应该很短,但不应为每个DbCommand使用单独的连接。

如果您正在使用任何类型的ADO.NET,将自动使用连接池(至少与SQL Server一起使用),除非您明确禁用它,因此没有理由对此做任何特别的事情。

请务必记住在每次使用后关闭连接 – 这只会将连接返回到连接池。

通常,您应该为每个命令创建一个新连接,并利用内置连接池。