none
关于VB2005与SQL2005服务器链接的问题。 RRS feed

  • 问题

  • 我弄了一段很短的代码,如下:
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim c As String
            c = "Data Source=10.1.1.246\SQLEXPRESS;Database=Temp;User ID=sa;Password=whjctxk;Trusted_Connection=False;"
            Call Me.ReadOrderData(c)
        End Sub

        Public Sub ReadOrderData(ByVal connectionString As String)
            Dim queryString As String = "SELECT * FROM dbo.PeiXianBiao"
            Using connection As New SqlConnection(connectionString)
                Dim command As New SqlCommand(queryString, connection)
                connection.Open()
                Dim reader As SqlDataReader = command.ExecuteReader()
                Try
                    While reader.Read()
                        Me.RichTextBox1.Text = Me.RichTextBox1.Text & Chr(13) & (String.Format("{0}, {1}", reader("DianHuaHaoMa"), reader("Beizhu")))
                    End While
                Finally
                    ' Always call Close when done reading.
                    reader.Close()
                End Try
            End Using
        End Sub

    我在服务器上面观察到这样的一个问题:
    当执行到
    connection.Open()
    的时候,服务器的1433端口跟我的这台计算机联系上了。
    但执行到
    connection.Close()
    的时候,TCP还没有断开。
    甚至是 End Using 和 End Sub 都没有断开。
    只是在我的程序关闭之后,TCP链接断开了。

    我想问:
    我能不能在程序内设定真正断开与服务器1433端口的TCP链接?
    如果不是断开TCP链接,那么connection.Close()具体起到了那些作用?


    什么?个性签名?哼!打死我也不签。既然你们都不觉得我聪明,那就叫我BenQ吧。好歹也是国际大品牌。
    2009年4月25日 15:36

答案

  • 你好!
         Close()方法是将连接释放到连接池,或者在连接池被禁用的情况下关闭连接!
         将连接返回到连接池时,将不会在服务器上引发登录和注销事件,因为在将连接返回到连接池时,将不会实际关闭连接!
         你可以在连接字符串中指定是否使用使用连接池(通过Pooling字段)
         如果连接池值 Pooling 设置为 true yes ,则基础连接将返回到连接池。另一方面,如果 Pooling 设置为 false no ,则会关闭到服务器的基础连接。
    周雪峰
    2009年4月26日 0:58
    版主

全部回复

  • 你好!
         Close()方法是将连接释放到连接池,或者在连接池被禁用的情况下关闭连接!
         将连接返回到连接池时,将不会在服务器上引发登录和注销事件,因为在将连接返回到连接池时,将不会实际关闭连接!
         你可以在连接字符串中指定是否使用使用连接池(通过Pooling字段)
         如果连接池值 Pooling 设置为 true yes ,则基础连接将返回到连接池。另一方面,如果 Pooling 设置为 false no ,则会关闭到服务器的基础连接。
    周雪峰
    2009年4月26日 0:58
    版主
  • 非常感谢周版主。


    什么?个性签名?哼!打死我也不签。既然你们都不觉得我聪明,那就叫我BenQ吧。好歹也是国际大品牌。
    2009年4月27日 0:49
  • 不用客气啊!
    欢迎你常常来这里和大家交流啊!
    周雪峰
    2009年4月27日 1:19
    版主