任何人都可以解释为什么这会陷入无限循环吗?我把它放在一个按钮下,它工作正常。但是当我把它放在一个类中并实例化该类时,它会陷入无限循环。我假设它被卡在循环中,因为当我添加断点时,它不会比循环内部更进一步。它甚至没有通过" 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
答案 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