请帮我做作业。由于这个错误,我无法完成
已经有一个与此命令关联的打开DataReader,必须先关闭它
这是我的代码:
con.Open()
Dim rs As New MySqlCommand("select * from account where username='" & txtu.Text & "' and password='" & txtp.Text & "' ", con)
Dim sqlRead As MySqlDataReader = rs.ExecuteReader
If sqlRead.HasRows Then
If sqlRead.Read = True Then
If sqlRead("level") = "admin" Then
MessageBox.Show("Can't Delete.")
ElseIf sqlRead("level") = "staff" Then
Dim query As String = "delete from account where username='" & txtu.Text & "'"
Dim cmd As New MySqlCommand(query, con)
cmd.ExecuteNonQuery()
sqlRead.Close()
End If
End If
End If
End If
con.Close()
要按照您尝试的方式执行此操作,您还需要创建一个新连接以与新命令一起使用,在这种情况下,您将导致可避免的连接。
Private Sub DReader()
Using Con As New MySql.Data.MySqlClient.MySqlConnection("ConnectionString")
Con.Open()
Using MySqlReader As MySql.Data.MySqlClient.MySqlDataReader =
New MySql.Data.MySqlClient.MySqlCommand("Command", Con).ExecuteReader
While MySqlReader.Read
Select Case MySqlReader.GetString(MySqlReader.GetOrdinal("level")).ToUpper
Case "ADMIN"
MessageBox.Show("Can't Delete.")
Case "STAFF"
Dim query As String = "delete from account where username='" & txtu.Text & "'"
DelRow(query)
End Select
End While
End Using
Con.Close()
End Using
End Sub
Private Sub DelRow(ByVal Qry As String)
Using Con As New MySql.Data.MySqlClient.MySqlConnection("ConnectionString")
Con.Open()
Using DelCmd As New MySql.Data.MySqlClient.MySqlCommand(Qry, Con)
DelCmd.ExecuteNonQuery()
End Using
Con.Close()
End Using
End Sub
我相信这会回答你的问题,但是,你真的应该问如何实现这个例程的目标。参数和“ExecuteScalar”将是一种更好的做法
我认为你只需要在最后一个结束后放置这个代码:sqlRead.Close(),因为当这个“内部if”代码正确时,将有很大的机会运行代码:如果sqlRead(“level”)= “admin”然后还需要关闭。
简而言之,只有在执行此代码时,您的读者才会被关闭:ElseIf sqlRead(“level”)=“staff”然后
所以,将其更新为:
If sqlRead.HasRows Then
If sqlRead.Read = True Then
If sqlRead("level") = "admin" Then
MessageBox.Show("Can't Delete.")
ElseIf sqlRead("level") = "staff" Then
Dim query As String = "delete from account where username='" & txtu.Text & "'"
Dim cmd As New MySqlCommand(query, con)
cmd.ExecuteNonQuery()
End If
End If
End If
End If
sqlRead.Close()
con.Close()
我希望这能帮到你们所有人,