我正在编写一个与本地sql server通信的服务器应用程序。
每个客户端都需要读取或写入数据库数据。
有一个线程安全类,它会在单个sql连接上排队并执行sql命令会更好吗?或者我应该为每个命令打开一个新连接?这对性能有影响吗?
答案 0 :(得分:6)
如果您正在使用任何类型的ADO.NET,则会自动使用连接池(至少使用SQL Server),除非您明确禁用它,因此没有理由对此做任何特别的事情。
请务必记住每次使用后关闭连接 - 这只会将连接返回到连接池。
答案 1 :(得分:6)
如果您有一批必须在彼此之后执行的语句,则应使用相同的SqlConnection。 只要您不再需要SqlConnection,并且您不知道何时需要再次连接,就应该关闭连接。
因此,例如,如果必须执行2个插入语句和一个更新语句,则应使用相同的SqlConnection。 这里最重要的优点是,如果需要,您可以将这些语句放在事务中。无法通过连接共享事务。
使用完DB后,可以关闭连接。默认情况下,使用连接池,并且连接将返回到池,以便下次需要连接到DB时可以重用它。 连接生命周期应该很短,但不应为每个DbCommand使用单独的连接。
答案 2 :(得分:2)
通常,您应该为每个命令创建一个新连接,并利用内置连接池。