为什么我的读者陷入无限循环

时间:2015-08-19 00:57:32

标签: sql vb.net infinite-loop

任何人都可以解释为什么这会陷入无限循环吗?我把它放在一个按钮下,它工作正常。但是当我把它放在一个类中并实例化该类时,它会陷入无限循环。我假设它被卡在循环中,因为当我添加断点时,它不会比循环内部更进一步。它甚至没有通过" End While",但是如果我把这个代码放在一个按钮点击ASP.NET下它就可以了。我究竟做错了什么?

请不要批评" SQL注入"通过我将值传递到我的数据库的方式,因为这不是公共事物,我很清楚这一点。

Imports System.Data
Imports System.Data.SqlClient


    'Step 1: Select the device ID
    Function SelectDevice(d As String, b As String, m As String, o As String) As String

        ' Try

        'Connect to database
        Dim xcitoDBConnection As SqlConnection
        xcitoDBConnection = New SqlConnection("Data Source=NOTDISPLAYED;" + "Initial Catalog=NOTDISPLAYED;" + "Integrated Security=True")
        Dim GetDeviceID As String = "SELECT DISTINCT(Identifier) FROM Support.Devices WHERE DeviceType='" & d & "' AND Brand = '" & b & "' AND Model = '" & m & "' AND OS = '" & o & "'"
        Dim command As SqlCommand = New SqlCommand(GetDeviceID, xcitoDBConnection)

        xcitoDBConnection.Open()
        'command.ExecuteScalar()

        Dim reader As SqlDataReader
        reader = command.ExecuteReader(CommandBehavior.CloseConnection)
        Dim GetID As String

        While reader.Read()
            GetID = reader("Identifier").ToString
            Return GetID
        End While

        xcitoDBConnection.Close()

        ' Catch ex As ApplicationException
        '  ex.Source = ("Selection Error")
        ' Throw ex

        ' Finally

        'End Try
    End Function
End Class

1 个答案:

答案 0 :(得分:2)

reader = command.ExecuteReader()

而不是

reader = command.ExecuteReader(CommandBehavior.CloseConnection)

在您返回之前关闭连接。 并返回函数的结尾

按照这个

Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
  Dim GetID As String

    Using connection As New SqlConnection(connectionString)
        connection.Open()

        Dim command As New SqlCommand(queryString, connection)
        Dim reader As SqlDataReader = command.ExecuteReader()
        While reader.Read()
            GetID = reader(0).ToString
        End While 
    End Using
    Return GetID 
End Sub
相关问题