好吧,我在本周早些时候询问了这个错误,并得到了一些非常有用的答案,毫无疑问,自从我开始遵循这些建议以来,情况已经有了很大的改善。
但是,现在我使用“正确”的最佳实践方法来访问数据库,我仍然在某些函数上遇到此错误,并且无法让它在该块中消失。这是我的代码:
Public Shared Function doesBasketExist(ByVal baskethash As String) As Boolean
Dim _r As Boolean
Using db As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("pitstopConnectionString").ConnectionString)
Using cmd As New SqlCommand("doGetBasketByHash", db)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@baskethash", baskethash)
Using dr As SqlDataReader = cmd.ExecuteReader()
If dr.HasRows() = True Then
_r = True
Else
_r = False
End If
dr.Close()
End Using
End Using
End Using
Return _r
End Function
现在,无论我做什么,我都会得到: ExecuteReader 需要一个开放且可用的连接。连接的当前状态已关闭。在这个连接上。我确实有一些函数,其中的对象在此类中称为相同的东西(cmd、dr 等),但使用会在其自身之后关闭,不是吗?
欢迎提出建议:)
我认为您忘记打开连接。
在该行之前打开它:
cmd.Parameters.AddWithValue("@baskethash", baskethash)
Using -
db.Open()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)