grisson 0 Denunciar post Postado Julho 2, 2008 Olá! Estou lendo uma tabela pegando o valor de um campo e atualizando em outra tabela um campo com esse valor que peguei. Estou pegando o erro na linha com o comando: MySqlCommand cmd2 = new MySqlCommand(sSql2, conn); int i = cmd2.ExecuteNonQuery();O Erro é este: There is already an open DataReader associated with this Connection which must be closed first. Abaixo segue o codigo. Agradeço se alguem puder ajudar a solucionar p problema. Se tiverem uma sugestao melhor estou abertoa sugestoes. protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string strConexao = "server=localhost;user id=usuario;password=senha;database=banco"; string sSql = "SELECT codigo, CodMun FROM municipio ORDER BY CodMun ASC "; using (MySqlConnection conn = new MySqlConnection(strConexao)) { MySqlDataReader r = null; MySqlCommand cmd = new MySqlCommand(sSql, conn); try { conn.Open(); r = cmd.ExecuteReader(CommandBehavior.CloseConnection); if (r.HasRows) { int tmunic = r.GetOrdinal("CodMun"); int tcodigo = r.GetOrdinal("codigo"); while (r.Read()) { string sSql2 = "UPDATE agencias SET codmunic = '" + r.GetString(tcodigo).ToString() + "' WHERE CodMun = '" + r.GetString(tmunic) + "' "; MySqlCommand cmd2 = new MySqlCommand(sSql2, conn); int i = cmd2.ExecuteNonQuery(); if (i > 0) { Response.Write(r.GetString(tmunic).ToString() + "<br/>"); } else { Response.Write("Erro ao inserir registro."); } } } } catch (Exception ex) { Label1.Text = ex.Message; conn.Close(); } } } } Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Julho 2, 2008 Movido Plataforma .NET » Visual Studio .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Web Applications grisson, Seja Bem Vindo ao Fórum Imasters, de uma olhada em nossas regras: http://forum.imasters.com.br/index.php?act=Help Estranho pois testei seu código e não deu erro algum, deu certinho!! :blink: Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
grisson 0 Denunciar post Postado Julho 2, 2008 Ok. Obrigado. Mas, voltando ao meu erro. O que poderia estar configurado no meu Visual Studio ou na minha aplicação que está dando o erro reportado e voce testou ai na sua maquina e nao deu nenhum erro??? Certamente é alguma configuração que na sua maquina tem que na minha não tem. Se puder dar uma luz de onde pode ser, porque eu estou pegando o erro quando executo o UPDATE. Obrigado de qualquer forma. Abraços, Grisson Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Julho 3, 2008 A única diferença que ao invés de utilizar MySql utilizei Firebird com o FirebirdClient, no caso seu código faz mais de uma conexão, seu banco aceita isso normalmente?? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
grisson 0 Denunciar post Postado Julho 3, 2008 Bom Dia! O que voce chama de mais de uma conexao? Eu abro o banco uma unica vez e dou um select numa tabela e depois faco um loop para le-la e enquanto leio abro uma outra tabela para atualizar um campo com o dado da primeira tabela. Voce chama de mais de uma conexao a abertura de duas tabelas simuntaneamente? Se isso nao é correto, então por favor, me diga como poderia fazer para ler uma tabela e enquanto nao chegasse o fim da leitura pudesse abrir uma outra tabela para ser atualizada. Sou novo em C# e antes trabalhei com VB 6.0 e sempre li tabelas simultaneamente. Peço a voce se puder, que me de uma luz em relação isso. Até mesmo esqueça meu codigo e sugira uma outra forma de fazer esse acesso. Obrigado. Grisson Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Julho 3, 2008 Não disse que isso esta errado, esta correto sim!! Mas como não encontrei erro ainda, só levantei esta hipótese. Vou testar seu código de novo, se encontrar algo, posto aqui. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
grisson 0 Denunciar post Postado Julho 3, 2008 OK. Obrigado. Mas lembre que o erro que estou pegando é esse: There is already an open DataReader associated with this Connection which must be closed first. Ele dá quando executo o ExecuteNonQuery do UPDATE. Ele reclama que já tem um DataReader associado e que teria que fecha-lo primeiro. Só que não tem 2 DataReader, logo é um erro maluco. Mas, agradeço se voce ou outro membro do Forum possa ajudar. Abraços, Grisson. Compartilhar este post Link para o post Compartilhar em outros sites
arthas_sp 0 Denunciar post Postado Março 22, 2010 conn.Open(); r = cmd.ExecuteReader(Commandbehavior.CloseConnection); nessa linha mano você executa o datareader, voce só poderá executar o command.executenonquery(); depois que fechar a conexao com o datareader ou seja, r.close(); só assim poderá chamar "int i = cmd2.ExecuteNonQuery();"... faça os testes comente uma dessas linhas ou de um close no datareader forçado mesmo Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Março 31, 2010 Olá arthas_sp, Obrigado por compartilhar seu conhecimento conosco. Continue contribuindo respondendo os tópicos mais recentes. Abraços Mário Monteiro Compartilhar este post Link para o post Compartilhar em outros sites