2014-10-01 56 views
-1

什么SQL连接对象是什么,当我们打开/关闭时会发生什么?它消耗了什么资源?为什么需要处理它(以c#/。net的形式)?什么是SQL连接

+3

你读过MSDN(尤其是备注部分)吗? http://msdn.microsoft.com/en-us/library/System.Data.SqlClient.SqlConnection(v=vs.110).aspx你还应该阅读所有关于[连接池](http:// msdn。 microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx)。 – 2014-10-01 10:04:51

+2

没什么比查看源代码[SqlConnection.cs](http://referencesource.microsoft.com/#System.Data/data/System/Data/SqlClient/SqlConnection.cs)好运 – Steve 2014-10-01 10:06:34

+0

@tim是的,我有。文章只是说“这是一个代表会议的对象”。它是如何做到的?这个对象内部发生了什么?请不要发送给我谷歌 - 我一直在那里,我也一直在SO搜索引擎。 – 2014-10-01 10:08:33

回答

1

SqlConnection: 看看the MSDN page for SqlConnection。声明:

SqlConnection对象表示SQL Server的唯一会话 数据源。使用客户端/服务器数据库系统时,它相当于 到服务器的网络连接。

SqlConnection.Open:MSDN page on SqlConnection.Open,它指出:

关闭SqlConnection吸引了来自连接池打开的连接,如果 一个是可用的。否则,它建立到SQL Server实例的新连接。

SqlConnection.Close(和处置):

The MSDN page on SqlConnection.Close说:

Close方法回滚任何未决的事务。然后它释放到连接池的连接,或者在连接池被禁用时关闭连接。

此外,在SqlConnection的页面则指出:

如果的SqlConnection超出范围,它不会被关闭。因此,您必须通过调用Close或Dispose来显式关闭连接。 Close和Dispose在功能上是等效的。如果连接池值Pooling设置为true或yes,则将底层连接返回到连接池。另一方面,如果将Pooling设置为false或否,则与服务器的底层连接实际上是关闭的。

和:

为了确保连接总是关闭,打开一个使用块的内部的连接,如图所示在下面的代码片段。这样做可确保在代码退出块时连接会自动关闭。

这应该回答你的问题。

编辑: 欲了解更多信息(也见于您的评论),您可以阅读Connection-Pooling,当然也可以查看source code SqlConnection。

+0

感谢您的回答,@ tobypls。在“编辑”部分中的这两个最后的链接正是我必须找到自己,但不知道如何制定我想获得答案的问题。 – 2014-10-01 10:31:40

+0

Okey太棒了!如果我的回答中包含您正在搜索的内容,请不要忘记将其标记为已接受。 – tobypls 2014-10-01 10:36:31

+0

所以实际上这个答案可以总结为:rtfm ;-) – 2014-10-01 10:49:27

0

Sql连接对象,我们使用属于System.Data.SqlClient命名空间的Sql连接类创建的对象。我们使用Sql Connection对象在sql server数据库中执行sql命令。

Close和Dispose是两个不同的东西。如果您关闭它,您可以重新使用该连接,但在处理之后不能重新连接。

在您需要之前打开连接并在完成您的需求后关闭连接总是一个好习惯。

在c#中,如果使用“using”语句创建连接,将会处理连接。