none
Update em banco de dados com textbox RRS feed

  • Pergunta

  • Olá,

    como atualizo uma tabela de banco access com valores vindo de textbox ?

    obrigado!


    Bruno Gaiola Domus & Lepton Des. Software
    sexta-feira, 11 de fevereiro de 2011 10:57

Respostas

    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 16:25
    sexta-feira, 11 de fevereiro de 2011 11:43
  • boas, usa oledb. ve esse link, é só adaptar , todas a logica é igual.

    http://msdn.microsoft.com/en-us/library/system.data.oledb%28v=vs.71%29.aspx


    espero ter ajudado.
    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 16:25
    sexta-feira, 11 de fevereiro de 2011 12:50
  • Bruno segue umm exemplo onde tenho uma tabela de cidades com os campos "Id(int, PK)", "Cidade(Texto)" e realizo uma atualização na mesma e no meu  form tenho um textbox (txtId) onde o usuário informa o ´código da cidade que deseja alterar e um segundo textBox(txtCidade) onde o usuario digita o novo nome da cidade e um botão alterar que realiza o update segue abaixo o código do botão alterar.

    Claro isso é um simples exemplo de como relizar o update:

    private void btnAlterar_Click(object sender, EventArgs e)
        {
          //Intâncio a conexão
          OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ze goiaba\Desktop\Teste2.mdb");
          //Instâncio a concatenação de string
          //que irá conter o comando
          StringBuilder sql = new StringBuilder();
          //monto o comando
          //Atulaiza a tabela cidades setando 
          //o campo cidade(que no meu caso...
          //contem o nome da cidade a ser alterada).
          sql.Append("UPDATE Cidades SET Cidade=@Cidade ");
          //Onde o código é igual ao informado
          //no textbox Id
          sql.Append("WHERE Id=@Id");
          //Monto o comando passado a string gerada
          //e a conexão
          OleDbCommand cmd = new OleDbCommand(sql.ToString(), conn);
          //preencho os parâmetros com as informações
          cmd.Parameters.AddWithValue("@Cidade", txtCidade.Text);
          cmd.Parameters.AddWithValue("@Id", txtId.Text);
          //abro a conexão
          conn.Open();
          //executo o comando
          cmd.ExecuteNonQuery();
          //fecho a conexão
          conn.Close();
        }
    
    Abraços e espero ter ajudado!
    Estudar, Estudar e Estudar! Não existe caminho curto.
    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 13:56
    • Não Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 15:43
    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 16:25
    sexta-feira, 11 de fevereiro de 2011 13:44
  • bruno vc quer alterar a chave primária da tabela?

    e outra coisa vc deve fazer o comando como como lhe passei:

    //vc tem que especificar qual codigo deseja alterar
    //implementando a clausula where 
    Dim Command As OleDbCommand = New OleDbCommand("update Chapas set Codigo=@Codigo Where ... ", con)
    
    
    //e o parâmetro vc esqueceu de colocar o @
        Command.Parameters.AddWithValue("@Codigo", TextBoxCodigo.Text)
    
    
    

     

    Abraços qualquer dúvida posta ai!


    Estudar, Estudar e Estudar! Não existe caminho curto.
    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 16:25
    sexta-feira, 11 de fevereiro de 2011 15:44
  • Não bruno, a chave primária não é alterável pois ela é a referência do seu registro em sua tabela, ou seja, não se pode alterar a chave primária.
    Estudar, Estudar e Estudar! Não existe caminho curto.
    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 16:25
    sexta-feira, 11 de fevereiro de 2011 16:03
  • //tenta assim acho que é pq vc alterou a ordem dos parâmetros.
    
    Dim Command As OleDbCommand = New OleDbCommand("update Chapas set Descricao=@Descricao where Codigo=@CodigoSelecionado", con)
    
       
    
      Command.Parameters.AddWithValue("@Descricao", TextBoxDescricao.Text)
    
    
    Command.Parameters.AddWithValue("@CodigoSelecionado", LabelCodigoSelecionado.Text)
    
    
    
      con.Open()
    
      Command.ExecuteNonQuery()
    
      con.Close()
    
    
    

     

     


    Estudar, Estudar e Estudar! Não existe caminho curto.
    sexta-feira, 11 de fevereiro de 2011 16:16

Todas as Respostas

    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 16:25
    sexta-feira, 11 de fevereiro de 2011 11:43
  • desculpa, 

    nao especifiquei

    mas estou usando mdb

     

     


    Bruno Gaiola Domus & Lepton Des. Software
    sexta-feira, 11 de fevereiro de 2011 12:41
  • boas, usa oledb. ve esse link, é só adaptar , todas a logica é igual.

    http://msdn.microsoft.com/en-us/library/system.data.oledb%28v=vs.71%29.aspx


    espero ter ajudado.
    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 16:25
    sexta-feira, 11 de fevereiro de 2011 12:50
  • então, mas este codigo ele esta sendo feito para inserir

     

    na verdade, eu quero fazer um update de dados que ja existem no banco

    que foram exibidos em textbox.

     

     


    Bruno Gaiola Domus & Lepton Des. Software
    sexta-feira, 11 de fevereiro de 2011 13:15
  • Bruno segue umm exemplo onde tenho uma tabela de cidades com os campos "Id(int, PK)", "Cidade(Texto)" e realizo uma atualização na mesma e no meu  form tenho um textbox (txtId) onde o usuário informa o ´código da cidade que deseja alterar e um segundo textBox(txtCidade) onde o usuario digita o novo nome da cidade e um botão alterar que realiza o update segue abaixo o código do botão alterar.

    Claro isso é um simples exemplo de como relizar o update:

    private void btnAlterar_Click(object sender, EventArgs e)
        {
          //Intâncio a conexão
          OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ze goiaba\Desktop\Teste2.mdb");
          //Instâncio a concatenação de string
          //que irá conter o comando
          StringBuilder sql = new StringBuilder();
          //monto o comando
          //Atulaiza a tabela cidades setando 
          //o campo cidade(que no meu caso...
          //contem o nome da cidade a ser alterada).
          sql.Append("UPDATE Cidades SET Cidade=@Cidade ");
          //Onde o código é igual ao informado
          //no textbox Id
          sql.Append("WHERE Id=@Id");
          //Monto o comando passado a string gerada
          //e a conexão
          OleDbCommand cmd = new OleDbCommand(sql.ToString(), conn);
          //preencho os parâmetros com as informações
          cmd.Parameters.AddWithValue("@Cidade", txtCidade.Text);
          cmd.Parameters.AddWithValue("@Id", txtId.Text);
          //abro a conexão
          conn.Open();
          //executo o comando
          cmd.ExecuteNonQuery();
          //fecho a conexão
          conn.Close();
        }
    
    Abraços e espero ter ajudado!
    Estudar, Estudar e Estudar! Não existe caminho curto.
    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 13:56
    • Não Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 15:43
    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 16:25
    sexta-feira, 11 de fevereiro de 2011 13:44
  • quando tento fazer o update ele me da esse erro:

    As alterações solicitadas para a tabela não foram satisfatórias já que criariam valores duplicados no índice, chave primária ou relação. Altere os dados no campo ou campos que contêm os dados duplicados, remova o índice ou redefina o índice para possibilitar entradas duplicadas e tente novamente.

     

     

    fiz dessa forma:

     

    Public con As New System.Data.OleDb.OleDbConnection("Provider = Microsoft.jet.OleDB.4.0;Data Source = cadastro.mdb;")

      Dim Command As OleDbCommand = New OleDbCommand("update Chapas set Codigo=@Codigo", con)

            Command.Parameters.AddWithValue("Codigo", TextBoxCodigo.Text)

            con.Open()

            Command.ExecuteNonQuery()

            con.Close()



    Bruno Gaiola Domus & Lepton Des. Software
    sexta-feira, 11 de fevereiro de 2011 15:33
  • bruno vc quer alterar a chave primária da tabela?

    e outra coisa vc deve fazer o comando como como lhe passei:

    //vc tem que especificar qual codigo deseja alterar
    //implementando a clausula where 
    Dim Command As OleDbCommand = New OleDbCommand("update Chapas set Codigo=@Codigo Where ... ", con)
    
    
    //e o parâmetro vc esqueceu de colocar o @
        Command.Parameters.AddWithValue("@Codigo", TextBoxCodigo.Text)
    
    
    

     

    Abraços qualquer dúvida posta ai!


    Estudar, Estudar e Estudar! Não existe caminho curto.
    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 16:25
    sexta-feira, 11 de fevereiro de 2011 15:44
  • posso dessa forma alterar a chave primaria da tabela ?

     

    fiz dessa forma, mas nao funcionou

     

     

            Dim Command As OleDbCommand = New OleDbCommand("update Chapas set Descricao=@Descricao where Codigo=@CodigoSelecionado", con)

            Command.Parameters.AddWithValue("@CodigoSelecionado", LabelCodigoSelecionado.Text)

     

     

            Command.Parameters.AddWithValue("@Descricao", TextBoxDescricao.Text)

     

            con.Open()

            Command.ExecuteNonQuery()

            con.Close()


    Bruno Gaiola Domus & Lepton Des. Software
    sexta-feira, 11 de fevereiro de 2011 15:52
  • Não bruno, a chave primária não é alterável pois ela é a referência do seu registro em sua tabela, ou seja, não se pode alterar a chave primária.
    Estudar, Estudar e Estudar! Não existe caminho curto.
    • Marcado como Resposta Bruno Gaiola sexta-feira, 11 de fevereiro de 2011 16:25
    sexta-feira, 11 de fevereiro de 2011 16:03
  • fiz dessa forma para alterar os outros campos

    mas ainda não funcionou

     

           Dim Command As OleDbCommand = New OleDbCommand("update Chapas set Descricao=@Descricao where Codigo=@CodigoSelecionado", con)

            Command.Parameters.AddWithValue("@CodigoSelecionado", LabelCodigoSelecionado.Text)

     

     

            Command.Parameters.AddWithValue("@Descricao", TextBoxDescricao.Text)

     

            con.Open()

            Command.ExecuteNonQuery()

            con.Close()


    Bruno Gaiola Domus & Lepton Des. Software
    sexta-feira, 11 de fevereiro de 2011 16:06
  • //tenta assim acho que é pq vc alterou a ordem dos parâmetros.
    
    Dim Command As OleDbCommand = New OleDbCommand("update Chapas set Descricao=@Descricao where Codigo=@CodigoSelecionado", con)
    
       
    
      Command.Parameters.AddWithValue("@Descricao", TextBoxDescricao.Text)
    
    
    Command.Parameters.AddWithValue("@CodigoSelecionado", LabelCodigoSelecionado.Text)
    
    
    
      con.Open()
    
      Command.ExecuteNonQuery()
    
      con.Close()
    
    
    

     

     


    Estudar, Estudar e Estudar! Não existe caminho curto.
    sexta-feira, 11 de fevereiro de 2011 16:16
  • Olá Bruno,

    Por favor, somente marque como resposta os posts que te ajudaram a resolver a sua questão (e não os seus próprios posts)...

    Obrigado pelo apoio...


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    sábado, 12 de fevereiro de 2011 12:05
    Moderador