.net 错误帮助:已经有一个与此命令关联的打开的DataReader,必须先关闭它。
我在代码的这一部分遇到了这个错误,我仍然无法找到解决方案 错误统计: ExecuteReader需要打开且可用的连接。这个 连接的当前状态为打开 源代码位于: 第144行:.CommandType=CommandType.Text 第145行:。连接=cn 第146行:dr=.ExecuteReader 第147行:结束于 第148行: 代码是:.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
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()的代码吗。