Usuário com melhor resposta
Já existe um DataReader aberto associado a este Command que deve ser fechado primeiro

Pergunta
-
Bom dia.
Estou iniciando em VB.NET e estou com este erro. Alguém poderia me ajudar? Tentei pesquisar este erro no fórum mas não fui feliz.
O cenário é o seguinte:
Estou acessando um banco SqlServer através de Stored Procedure. O primeiro Command funciona perfeitamente, quando executo o 2º aparece este erro, só que para ele estou usando um outro Command e outro DataReader e mesmo assim aparece o erro. Segue meu código
Dim cnn As New SqlClient.SqlConnection cnn.ConnectionString = ConnBD cnn.Open() Dim sqlCmd As New SqlClient.SqlCommand sqlCmd.Connection = cnn sqlCmd.CommandType = CommandType.StoredProcedure sqlCmd.CommandText = "proc_Vendas_SecaoAberta" Dim rst As SqlClient.SqlDataReader rst = sqlCmd.ExecuteReader() rst.Read() If IsDBNull(rst.Item("numsecao")) = False Then cboHorario.SelectedValue = Convert.ToInt32(rst.Item("idsecao").ToString) cboFilme.SelectedValue = Convert.ToInt32(rst.Item("idfilme").ToString) mskData.Text = rst.Item("data").ToString ' precisa pegar o numero de cadeiras vendidas na secao Dim sqlCmd2 As New SqlClient.SqlCommand sqlCmd2.Connection = cnn sqlCmd2.CommandType = CommandType.StoredProcedure sqlCmd2.CommandText = "proc_Vendas_IngressosVendidos" sqlCmd2.Parameters.Clear() sqlCmd2.Parameters.AddWithValue("@Data", rst.Item("Data").ToString) sqlCmd2.Parameters.AddWithValue("@Secao", rst.Item("idSecao").ToString) sqlCmd2.Parameters.AddWithValue("@Filme", rst.Item("idfilme").ToString) ' cria o parametro de saida sqlCmd2.Parameters.Add("@numIngressos", SqlDbType.Int).Direction = ParameterDirection.Output Dim rst2 As SqlClient.SqlDataReader rst2 = sqlCmd2.ExecuteReader() rst2.Read() If sqlCmd2.Parameters("@numIngressos").Value <> 0 Then lblCadeirasVendidas.Text = sqlCmd2.Parameters("@numIngressos").ToString End If End If rst.Close() cnn.Close()
O erro é apresentado na linha: rst2 = sqlCmd2.ExecuteReader()
Obrigado.
Respostas
-
Após, dar uma pesquisada sobre o DataReader, descobri que não posso utilizar da maneira como está, pois, uma vez utilizado o DataReader, ele bloqueia a Connection até que seja fechado, então tive que mudar o código, mas agora funcionou.
Obrigado a todos.
- Marcado como Resposta José Acílio F. Leão quarta-feira, 16 de agosto de 2017 17:57
- Não Marcado como Resposta Filipe B CastroModerator quarta-feira, 16 de agosto de 2017 20:42
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 16 de agosto de 2017 20:42
Todas as Respostas
-
Após, dar uma pesquisada sobre o DataReader, descobri que não posso utilizar da maneira como está, pois, uma vez utilizado o DataReader, ele bloqueia a Connection até que seja fechado, então tive que mudar o código, mas agora funcionou.
Obrigado a todos.
- Marcado como Resposta José Acílio F. Leão quarta-feira, 16 de agosto de 2017 17:57
- Não Marcado como Resposta Filipe B CastroModerator quarta-feira, 16 de agosto de 2017 20:42
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 16 de agosto de 2017 20:42
-
Boa tarde, José Acílio F. Leão.
Que bom que encontrou a resposta.
Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.