none
Melhor maneira de se fazer UPDATE

    Question

  • apenas um exemplo, se tenho 10 campos(10 textbox), na maioria das vezes, altero 1 ou 2 apenas, ai a questão, crio uma query que da um UPDATE GERAL nos campos,(isso teria o mesmo desempenho que um INSERT?acredito) ou verifico quais os textbox que foram alterados para ir montando a query?exemplo:

    if textbox1 foi alterado then

    UPDATE somente o campo do textbox1

    end if

    if textbox2 foi alterado then

    UPDATE somente o campo do textbox2

    end if

     

    não sei se fui muito claro, é que estou pensando no desempenho, porque nem todos os campos são sempre alterados, mas ai preciso ficar verificando quais foram alterados, 

    obrigado


    Encontrei a profissão
    Friday, September 10, 2010 5:59 PM

Answers

  • Você pode criar variaveis para armazenar os valores iniciais dos textbox e então comparar o valor final(hora em que o user manda alterar ou que sai do form, isto depende do seu sistema), e para a string que contem o update adicionar apenas os campos modificados, se não souber como fazer diga que eu lhe ajudo mas é bem simples.
    Monday, September 13, 2010 11:36 PM
  • Opa!

    Bom, suponhamos que você possua a seguinte classe:

     

    public class Aluno
    {
      public int Id { get; set; }
      public String Nome { get; set; }
      public String Turma { get; set; }
    
      public Aluno()
      {
       Id = 0;
       Nome = null;
       Turma = null;
      }
      public Aluno(int id, String nome, String turma)
      {
       Id = id;
       Nome = nome;
       Turma = turma;
      }
    
      public override String toString()
      {
       return Nome;
      }
    }

     

    O update geral consiste em você atualizar todos os campos da tupla que você escolheu, mesmo que os valores não tenham sido alterados.

    Insert Into Alunos Values (1, 'José', 'Noturno');
    Insert Into Alunos Values (2, 'Maria', 'Diurno');
    Insert Into Alunos Values (3, 'Pedro', 'Vespertino');
    Insert Into Alunos Values (4, 'Carla', 'Noturno');
    Insert Into Alunos Values (5, 'Toninho', 'Diurno');

    Vamos alterar somente o nome do José, por exemplo. Faríamos um método Update o qual receberia um objeto Aluno com os dados alterados e assim modificaria tudo:

    Aluno aluno = new Aluno();
       aluno.Id = 6;
       aluno.Nome = 'Terezinha';
       aluno.Turma = 'Pós-Graduação';
    
    AlunoDAO.Create(aluno); // Insere o aluno na Entidade
    
    aluno.Nome = 'Terezinha Pereira';
    
    AlunoDAO.Update(aluno); // Atualiza tudo, mesmo que só alterou o nome
    
    //------------------------------------------------------//
    public class AlunoDAO
    {
      public static Create(Aluno aluno)
      {
       String Query = string.Format("Insert Into Alunos Values ({0}, {1}, {2})", aluno.Id, aluno.Nome, aluno.Turma);
       //O resto da codificação...
      }
      public static Update(Aluno aluno)
      {
       String Query = string.Format("Update Aluno Set Nome = {0}, Turma = {1} Where Id = {2}", aluno.Nome, aluno.Turma, aluno.Id);
       //O resto da codificação...
      }
    }
    
    

    É basicamente por aí!

    Abraços!

     

     

    Wednesday, September 15, 2010 4:35 PM

All replies

  • Você pode criar variaveis para armazenar os valores iniciais dos textbox e então comparar o valor final(hora em que o user manda alterar ou que sai do form, isto depende do seu sistema), e para a string que contem o update adicionar apenas os campos modificados, se não souber como fazer diga que eu lhe ajudo mas é bem simples.
    Monday, September 13, 2010 11:36 PM
  • UPDATE GERAL nos campos,(isso teria o um desempenho similar a um INSERT?

    poderia mostrar seu exemplo? obrigado


    Encontrei a profissão
    Tuesday, September 14, 2010 10:54 PM
  • Opa!

    Bom, suponhamos que você possua a seguinte classe:

     

    public class Aluno
    {
      public int Id { get; set; }
      public String Nome { get; set; }
      public String Turma { get; set; }
    
      public Aluno()
      {
       Id = 0;
       Nome = null;
       Turma = null;
      }
      public Aluno(int id, String nome, String turma)
      {
       Id = id;
       Nome = nome;
       Turma = turma;
      }
    
      public override String toString()
      {
       return Nome;
      }
    }

     

    O update geral consiste em você atualizar todos os campos da tupla que você escolheu, mesmo que os valores não tenham sido alterados.

    Insert Into Alunos Values (1, 'José', 'Noturno');
    Insert Into Alunos Values (2, 'Maria', 'Diurno');
    Insert Into Alunos Values (3, 'Pedro', 'Vespertino');
    Insert Into Alunos Values (4, 'Carla', 'Noturno');
    Insert Into Alunos Values (5, 'Toninho', 'Diurno');

    Vamos alterar somente o nome do José, por exemplo. Faríamos um método Update o qual receberia um objeto Aluno com os dados alterados e assim modificaria tudo:

    Aluno aluno = new Aluno();
       aluno.Id = 6;
       aluno.Nome = 'Terezinha';
       aluno.Turma = 'Pós-Graduação';
    
    AlunoDAO.Create(aluno); // Insere o aluno na Entidade
    
    aluno.Nome = 'Terezinha Pereira';
    
    AlunoDAO.Update(aluno); // Atualiza tudo, mesmo que só alterou o nome
    
    //------------------------------------------------------//
    public class AlunoDAO
    {
      public static Create(Aluno aluno)
      {
       String Query = string.Format("Insert Into Alunos Values ({0}, {1}, {2})", aluno.Id, aluno.Nome, aluno.Turma);
       //O resto da codificação...
      }
      public static Update(Aluno aluno)
      {
       String Query = string.Format("Update Aluno Set Nome = {0}, Turma = {1} Where Id = {2}", aluno.Nome, aluno.Turma, aluno.Id);
       //O resto da codificação...
      }
    }
    
    

    É basicamente por aí!

    Abraços!

     

     

    Wednesday, September 15, 2010 4:35 PM