0

使用 VB.Net 2012 访问本地 SQL Server 2012 Express 数据时出现以下错误。

与服务器成功建立连接,但在登录过程中出现错误。(提供者:TCP 提供者,错误:0 - 指定的网络名称不再可用。

与服务器成功建立连接,但在登录过程中出现错误。(提供者:共享内存提供者,错误:0 - 管道的另一端没有进程。

似乎连接没有被释放,因为我有一个具有完全相同代码(参数除外)的函数并且它工作了 3 次,但在第 4 天我收到了一个类似上面的错误。

代码:

Public Function LookupSQRIDX(Lotnumber As String, TableToUse As String, IDXFieldToUse As String, LotField As String, LotMatch As String, SearchLine As String) As String
    Dim sConnection As String = "Server=MARIO\VSQL;Database=LEASE;User Id=cookieuser;Password=oreo;"
    Dim objCommand As New SqlCommand


    objCommand.CommandText = "Select top 1 " & IDXFieldToUse & " From [dbo].[" & TableToUse & "] where " & LotField & " like '%" & LotMatch & "' and line = '" & SearchLine & "' order by " & IDXFieldToUse
    objCommand.Connection = New SqlConnection(sConnection)
    objCommand.Connection.Open()
    Dim objDataReader As SqlDataReader = objCommand.ExecuteReader()
    Try
        Dim NumCols, NumRows As Integer
        Dim RowNum As Integer
        Dim MyArray = ""
        Dim Map1LastLot = "", Map2LastLot = ""

        If objDataReader.HasRows Then
            NumCols = objDataReader.FieldCount - 1
            Do While objDataReader.Read()
                RowNum = RowNum + 1
                MyArray = objDataReader(0).ToString
            Loop
            NumRows = RowNum
            objDataReader.Close()
            objCommand.Dispose()
            Return MyArray
        Else
            objDataReader.Close()
            objCommand.Dispose()
            Return ""
        End If

    Catch ex As Exception
        MessageBox.Show("Error: " & ex.Message)
        objDataReader.Close()
        objCommand.Dispose()
        Return ""
    End Try

    objDataReader.Close()

    objCommand.Dispose()

End Function
4

1 回答 1

0

添加了以下内容(使用 hvd 提供的提示),问题就消失了。显然,您需要关闭并处理连接,即使它已经包含在被处理的 objCommand 中。

       objCommand.Connection.Close()
       objCommand.Connection.Dispose()
       objDataReader.Close()
       objCommand.Dispose()
于 2013-08-07T13:37:30.377 回答