Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 错误帮助:已经有一个与此命令关联的打开的DataReader,必须先关闭它。_.net_Sql Server_Vb.net_Ado.net_Database Connection - Fatal编程技术网

.net 错误帮助:已经有一个与此命令关联的打开的DataReader,必须先关闭它。

.net 错误帮助:已经有一个与此命令关联的打开的DataReader,必须先关闭它。,.net,sql-server,vb.net,ado.net,database-connection,.net,Sql Server,Vb.net,Ado.net,Database Connection,我在代码的这一部分遇到了这个错误,我仍然无法找到解决方案 错误统计: ExecuteReader需要打开且可用的连接。这个 连接的当前状态为打开 源代码位于: 第144行:.CommandType=CommandType.Text 第145行:。连接=cn 第146行:dr=.ExecuteReader 第147行:结束于 第148行: 代码是: Public Function GetDBField(ByVal Query As String, ByVal Field As String) A

我在代码的这一部分遇到了这个错误,我仍然无法找到解决方案

错误统计:

ExecuteReader需要打开且可用的连接。这个 连接的当前状态为打开

源代码位于:

第144行:.CommandType=CommandType.Text

第145行:。连接=cn

第146行:dr=.ExecuteReader

第147行:结束于

第148行:

代码是:

 Public Function GetDBField(ByVal Query As String, ByVal Field As String) As String

    'abriendo la conexion a la base de datos

    SqlConnect()

    Dim cmd As New SqlCommand
    Dim result As String = ""

    Dim dr As SqlDataReader
    dr = Nothing

    'ejecutando el lector de DO
    Try

        With cmd
            .CommandText = Query
            .CommandType = CommandType.Text
            .Connection = cn
            dr = .ExecuteReader
        End With



    Catch ex As SqlException
        ShowAlertMessage(ex.Message)
        GetDBField = Nothing
        Exit Function
    End Try

    'Escribiendo en una Variable de texto
    Try
        If dr.HasRows Then

        End If
        While dr.Read
            If IsDBNull(dr(Field).ToString) = True Then
                result = Nothing
            Else
                result = dr(Field).ToString
            End If
        End While
    Catch ex As SqlException
        ShowAlertMessage(ex.Message)
        GetDBField = Nothing
        Exit Function

    End Try

    'Cerrando la conexion de BD
    SqlDisconnect()

    GetDBField = result
End Function
真的需要任何帮助吗

在重播最后一个问题时,所有这些代码都在App_代码的vb页面中

#Region "   Variables Globales"
    Public db As String = "repuestosdr"

    'Public CnStr As String = "Driver={SQL Server Native Client 10.0};Server=localhost;Database=" & db & ";Uid=crivera;Pwd=crivera;"
    Public CnStr As String = ConfigurationManager.ConnectionStrings("SuoodConnection").ConnectionString    '"Driver={SQL Server};Server=repuestosdr.db.10580944.hostedresource.com;Database=" & db & ";Uid=" & db & ";Pwd=r34llyH4rd!;Port=1433;"

    Public Logged As Boolean = False

    Public Qry As String
    Public msg As New MsgBoxResult


    Public ds As New DataSet
    Public dt As New DataTable
    Public dr As SqlDataReader
    Public cn As New SqlConnection()
    Public da As New SqlDataAdapter
    Public cmd As SqlCommand


#End Region
连接:

#Region "   Connection"
    Public Function SqlConnect(Optional ByVal MyPage As Page = Nothing) As Boolean
        Try
            If cn.State = ConnectionState.Closed Then
                With cn
                    .ConnectionString = CnStr
                    .Open()
                End With
            End If

        Catch myerror As Exception
            ShowAlertMessage("Error Connecting to the Database" & Chr(13) & myerror.Message)
            SqlConnect = False
        End Try
        SqlConnect = True
    End Function

什么是cn?您在哪里定义和初始化它?。保留全局连接对象会导致任何类型的错误。您好Steve,我刚刚编辑了我的帖子如果您在SqlConnect中反转if语句的逻辑会发生什么。。。这样地。。。如果cn.State ConnectionState.Open ThenPrfctByDsgn,我刚刚更改了它,当您调用ExecuteReader而不使用任何CommandBehavior选项时,错误仍然会显示出来,它默认保持连接打开,直到读卡器关闭。我看不出你在哪里关闭了阅读器。另外,您可以发布SqlDisconnect()的代码吗。