Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Durbano

MySqlDataAdapter UpdateCommand

Recommended Posts

Preciso que seja feito UPDATE com base na tabela passada como parâmetro objDT (tipo DataTable)

 

porém não acontece nada, nenhum erro. Parece que não está executando.

 

Alguem tem alguma ideia do que possa ser ?

 

 

 

 

        private void OperationUpdate()

        {
            using (objDA = new MySqlDataAdapter())
            {
                // Set the UPDATE command and parameters.


                objDA.Update(objDT);
                objDA.UpdateCommand = new MySqlCommand("UPDATE Artigo SET titulo=@VarTitulo, imagem=@VarImagem, manchete=@VarManchete, mensagem=@VarMensagem WHERE id=@VarId",objCONN);
                objDA.UpdateCommand.Parameters.Add("@VarTitulo", MySqlDbType.VarChar, 150, "titulo");
                objDA.UpdateCommand.Parameters.Add("@VarImagem", MySqlDbType.VarChar, 150, "imagem");
                objDA.UpdateCommand.Parameters.Add("@VarManchete", MySqlDbType.VarChar, 200, "manchete");
                objDA.UpdateCommand.Parameters.Add("@VarMensagem", MySqlDbType.VarChar, 8000, "mensagem");
                objDA.UpdateCommand.Parameters.Add("@VarId", MySqlDbType.Int32, 11, "id");
                
                objDA.UpdateCommand.ExecuteNonQuery();




            }
        }

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa definir uma conexão ao banco de dados e abrí-la antes de executar qualquer operação:

 

 

 

 

MySqlConnection con = new MySqlConnection("ConnectionString");

 

objDA.UpdateCommand = new MySqlCommand("UPDATE Artigo SET titulo=@VarTitulo, imagem=@VarImagem, manchete=@VarManchete, mensagem=@VarMensagem WHERE id=@VarId",objCONN);
objDA.UpdateCommand.Parameters.Add("@VarTitulo", MySqlDbType.VarChar, 150, "titulo");
objDA.UpdateCommand.Parameters.Add("@VarImagem", MySqlDbType.VarChar, 150, "imagem");
objDA.UpdateCommand.Parameters.Add("@VarManchete", MySqlDbType.VarChar, 200, "manchete");
objDA.UpdateCommand.Parameters.Add("@VarMensagem", MySqlDbType.VarChar, 8000, "mensagem");
objDA.UpdateCommand.Parameters.Add("@VarId", MySqlDbType.Int32, 11, "id", <suaconexao>);

 

Depois você coloca

 

 

 

 

con.open();


Comando.ExecuteNonQuery();

con.Close();

Compartilhar este post


Link para o post
Compartilhar em outros sites

KhaosDoctor obrigado pela resposta.

 

objCONN é uma variável global.

 

O estado da conexão está aberta.

 

Alguma outra ideia ?

 

 

valeu !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou?

 

Desculpe eu errei uma parte do seu código, adicione o código assim:

 

 

 

objDA.Update(objDT);
objCONN.Open();
                objDA.UpdateCommand = new MySqlCommand("UPDATE Artigo SET titulo=@VarTitulo, imagem=@VarImagem, manchete=@VarManchete, mensagem=@VarMensagem WHERE id=@VarId",objCONN);
                objDA.UpdateCommand.Parameters.Add("@VarTitulo", MySqlDbType.VarChar, 150, "titulo");
                objDA.UpdateCommand.Parameters.Add("@VarImagem", MySqlDbType.VarChar, 150, "imagem");
                objDA.UpdateCommand.Parameters.Add("@VarManchete", MySqlDbType.VarChar, 200, "manchete");
                objDA.UpdateCommand.Parameters.Add("@VarMensagem", MySqlDbType.VarChar, 8000, "mensagem");
                objDA.UpdateCommand.Parameters.Add("@VarId", MySqlDbType.Int32, 11, "id");
                
                objDA.UpdateCommand.ExecuteNonQuery();
objCONN.Close();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcionou...

 

A conexão está aberta já. É a variável global objCONN, eu abro a conexão em outro método antes de chamar este.

 

objDA.Update(objDT);
objCONN.Open();
                objDA.UpdateCommand = new MySqlCommand("UPDATE Artigo SET titulo=@VarTitulo, imagem=@VarImagem, manchete=@VarManchete, mensagem=@VarMensagem WHERE id=@VarId",objCONN);
                objDA.UpdateCommand.Parameters.Add("@VarTitulo", MySqlDbType.VarChar, 150, "titulo");
                objDA.UpdateCommand.Parameters.Add("@VarImagem", MySqlDbType.VarChar, 150, "imagem");
                objDA.UpdateCommand.Parameters.Add("@VarManchete", MySqlDbType.VarChar, 200, "manchete");
                objDA.UpdateCommand.Parameters.Add("@VarMensagem", MySqlDbType.VarChar, 8000, "mensagem");
                objDA.UpdateCommand.Parameters.Add("@VarId", MySqlDbType.Int32, 11, "id");
                
                objDA.UpdateCommand.ExecuteNonQuery();
objCONN.Close();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não dá nenhum erro..

 

Parece que não executa o UPDATE, as alterações feitas do DataTable (objDT) não são refletidas no tabela Artigo.



Resolvi desde modo

 

 

Não queria fazer este loop, mas por hora foi a forma que encontrei para sair deste problema.

 

 

 

                objDA.UpdateCommand = new MySqlCommand("UPDATE Artigo SET titulo = @VarTitulo, imagem = @VarImagem, manchete = @VarManchete, mensagem = @VarMensagem WHERE id = @VarId", objCONN);
                objDA.UpdateCommand.Parameters.Add("@VarTitulo", MySqlDbType.VarChar);
                objDA.UpdateCommand.Parameters.Add("@VarImagem", MySqlDbType.VarChar);
                objDA.UpdateCommand.Parameters.Add("@VarManchete", MySqlDbType.VarChar);
                objDA.UpdateCommand.Parameters.Add("@VarMensagem", MySqlDbType.VarChar);
                objDA.UpdateCommand.Parameters.Add("@VarId", MySqlDbType.Int32);
                
                foreach (DataRow row in objDT.Rows)
                {
                    objDA.UpdateCommand.Parameters["@VarTitulo"].Value = row["titulo"].ToString();
                    objDA.UpdateCommand.Parameters["@VarImagem"].Value = row["imagem"].ToString();
                    objDA.UpdateCommand.Parameters["@VarManchete"].Value = row["manchete"].ToString();
                    objDA.UpdateCommand.Parameters["@VarMensagem"].Value = row["mensagem"].ToString();
                    objDA.UpdateCommand.Parameters["@VarId"].Value = row["id"].ToString();
                    objDA.UpdateCommand.ExecuteNonQuery();
                }

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.