2009-09-22 60 views
3

我正在写一个与本地sql server通信的服务器应用程序。每个查询都有一个新的sql连接?

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

它会更好有一个线程安全类将入队和一个SQL连接上执行SQL命令?或者我应该为每个命令打开一个新的连接?对性能来说它有多重要?

回答

6

如果您有一批具有后对方要执行的语句,你应该使用相同的SqlConnection。 只要您不再需要SqlConnection,并且您不知道何时需要再次连接,则应关闭连接。

所以,如果你要执行2条插入语句后对方一个更新语句,比如,你应该使用相同的SqlConnection。
这里最重要的优点是,如果需要,您可以将这些声明放入交易中。事务不能通过连接进行共享。

当您完成对数据库的处理后,您可以关闭连接。默认情况下,使用连接池,并且连接将返回到池,以便下次连接到数据库时可以重新使用它。 连接生存期应该很短,但不应为每个DbCommand使用单独的连接。

2

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

+0

这是一个坏习惯...... – 2009-09-22 07:36:01

+0

我假设每个客户端一次执行一个命令。所以我不明白什么是坏习惯 – M4N 2009-09-22 07:41:45

6

如果使用ADO.NET的任何风味,连接池将自动使用(至少与SQL Server),除非您明确禁用它,所以没有理由做任何特殊之处,。

一定要记住关闭连接中每一个用过之后 - 这将简单地返回到连接池的连接。