我使用以下代码收到了错误消息There is an open data reader associated with this command which needs to be closed first
:
myCommand = New SqlCommand("SELECT BookCode FROM tblBook",myConnection)
myReader = myCommand.ExceuteReader
While myReader.Read
If myReader(0).ToString <> txtBookCode.Text Then
myCommand = New SqlCommand("INSERT INTO tblBook VALUES(@BookCode, @BookTitle)",myConnection)
myCommand.Parameters.AddWithValue("@BookCode", txtBookCode.Text)
myCommand.Parameters.AddWithValue("@BookTitle", txtBookTitle.Text)
myCommand.ExecuteNonQuery()
Else
MsgBox("There is already a book name '"& txtTitle.Text "'. Please try another code.",vbOkOnly,"BookCode Exists")
End If
End While
请求帮助。
答案 0 :(得分:2)
不要重复使用myCommand变量。创建一个新的。
myCommand也应该放在最后(以及读者)。
异常的真正原因更可能是您尝试同时在一个连接上运行两个命令。 首先从阅读器读取您需要的所有数据,然后执行所有插入操作。不是一次两个(我假设你不想创建两个连接。那会很糟糕)
答案 1 :(得分:1)
看起来你试图不止一次地使用一个变量myCommand - 在第一行代码和WHILE循环中。 最好再声明一个AdoCommand变量以在LOOP中使用它