Member 14856045 Ответов: 1

'Executereader требует открытого и доступного соединения. Текущее состояние соединения закрыто.'


            connection_open()
            cmd = New SqlCommand(qry, cnn)
            dr = cmd.ExecuteReader

            If dr.Read = True Then
                MsgBox("Login Successfully", MsgBoxStyle.Information, "Login Success")
                Me.Hide()
                connection_close()
            Else
                MsgBox("Invalid User_Name/Password", MsgBoxStyle.Critical, "Login Failure")
                connection_close()

            End If




        End If
    End Sub
End Class


Что я уже пробовал:

ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения закрыто.'

F-ES Sitecore

Эта ошибка не требует объяснений. Вместо того чтобы использовать глобальные\общие соединения, когда вам нужно соединение, создайте его там, а затем используйте новое SqlConnection. Как бы то ни было, проблема, вероятно, заключается в комбинации вашей функции connection_open и вашей переменной "cnn".

PIEBALDconsult

Мы понятия не имеем, что делает connection_open (), и, возможно, вы тоже не знаете.
Попробуйте cmd.Связи.открыть()

1 Ответов

Рейтинг:
2

OriginalGriff

Мы не можем видеть вашего connection_open метод, но он не открывает соединение, которое вы используете, и вы все равно не должны этого делать. Создать ваши связи внутри Using заблокируйте, откройте его, и пусть система закроется и избавится от него, когда он выйдет из области видимости. "Совместное использование" соединения, как правило, плохая идея и приводит к проблемам позже.

Using con As New SqlConnection(strConnect)
	con.Open()
	Using cmd As New SqlCommand("SELECT iD, description FROM myTable", con)
		Using reader As SqlDataReader = cmd.ExecuteReader()
			While reader.Read()
				Dim id__1 As Integer = CInt(reader("iD"))
				Dim desc As String = DirectCast(reader("description"), String)
				Console.WriteLine("ID: {0}" & vbLf & "    {1}", iD, desc)
			End While
		End Using
	End Using
End Using