Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou usando uma conexão com banco MySQL, e minha rotina está assim:
Dim cn As MySqlConnection = abreConexao()
Dim myCommand As New MySqlCommand
Dim myReader As MySqlDataReader
Dim myExecute As MySqlDataReader
Dim SQL As String
SQL = "select * from TABELA"
myCommand.Connection = cn
myCommand.CommandText = SQL
myReader = myCommand.ExecuteReader()
...
SQL = "update TABELA set estado = '" & cliente(i).getEstado() & "', ultimatentativa = '" & cliente(i).getUltimaTentativa() & "', tentativasefetuadas = " & cliente(i).getTentativasEfetuadas() & ""
SQL = SQL & " where id = " & cliente(i).getId()
myCommand.CommandText = SQL
myExecute = myCommand.ExecuteReader()
Na primeira execucao esta funcionando, mas na segunda da o seguinte erro:
There is already an open DataReader associated with this Connection which must be closed first
Parece que preciso fechar o myCommand, mas nao encontrei como fazer. E outra coisa, como nao ha um retorno do meu update, preciso mesmo assim inserir no myExecute? Quando trabalhava com ADO dava para simplesmente executar.
Obrigado desde ja.
Hehe, ninguem nem chegou nem a ver o topico ainda mas jah achei.
O que eu precisava fechar nao era o myCommand, e sim o myReader que estava associado ao myCommand.
Fechando resolveu, e quando a nao precisar passar para uma variavel por nao haver retorno, preciso usar o ExecuteNonQuery ao inves do ExecuteReader.