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