System.InvalidOperationException: 已有打开的与此命令相关联的 DataReader,必须首先将它关闭

FunctionIndustrybigclass(ByValclassnameAsString)AsStringDimclassCmdAsSqlCommandDimlis... Function Industrybigclass(ByVal classname As String) As String
Dim classCmd As SqlCommand
Dim listCmd As SqlCommand
Dim listReader As SqlDataReader
Dim IndustryID As Integer
Dim connectionString As String = GetConnectionString()

Dim classSql As String = "Select ID, Industry, IndustryID, Sequence From Industry Where IndustryID = 0 and classname='"& classname &"' Order By Sequence Desc, ID Asc"
Dim listSql As String ="Select ID, Industry, IndustryID, Sequence From Industry Where IndustryID = " & IndustryID & " Order By Sequence Desc, ID Asc"

Using awConnection As New SqlConnection(connectionString)

classCmd = New SqlCommand(classSql, awConnection)
listCmd = New SqlCommand(listSql, awConnection)
listCmd.Parameters.Add("@IndustryID", SqlDbType.Int)

awConnection.Open()

Using classReader As SqlDataReader = classCmd.ExecuteReader()

While classReader.Read()
Console.WriteLine("<dl><dt><a href=""search.aspx?industryid=" & classReader.GetValue(classReader.GetOrdinal("ID")) & ">" & classReader.GetValue(classReader.GetOrdinal("Industry")) & "</a></dt><dd class='list'><ul>")
IndustryID = CInt(classReader("ID"))
listCmd.Parameters("@IndustryID").Value = IndustryID
listReader = listCmd.ExecuteReader()

Using listReader
While listReader.Read()
Console.WriteLine(CStr(listReader("Industry")))
End While
listReader.Close()
End Using

Console.WriteLine("</ul></dd><dd class='more'><a href=""search.aspx?industryid=" & classReader.GetValue(classReader.GetOrdinal("ID")) & " target=""_blank"">更多>></a></dd></dl>")

End While
classReader.Close()
End Using
End Using

End Function

异常详细信息: System.InvalidOperationException: 已有打开的与此命令相关联的 DataReader,必须首先将它关闭。

源错误:

行 80: IndustryID = CInt(classReader("ID"))
行 81: listCmd.Parameters("@IndustryID").Value = IndustryID
行 82: listReader = listCmd.ExecuteReader()
行 83:
行 84: Using listReader

82行出错
展开
 我来答
月冷_星晴
2011-09-09 · TA获得超过146个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:163万
展开全部
每个数据库连接橡举只能同时物陵使用一个SqlDataReader。如果需要在循环里面做其他梁蚂碧事,那么你可以读取数据到DataSet里面,再进行操作。DataSet加载完数据连接就会被释放的
追问
这个可是按照 MSDN里写的。怎么也不行啊
追答
这个就不清楚了,反正一个connection是不能同时使用多个SqlDataReader的
yyf6767667
2019-03-05
知道答主
回答量:54
采纳率:100%
帮助的人:4.3万
展开全部
你的这个问题段樱出现在连接字符串上,在上面加上MultipleActiveResultSets=true,就可以了。其意握谈丛义为:侍洞将数据库连接设置可复用,即可供多个SqlCommand同时使用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式