none
Inserir dados na TextBox e retornar os dados RRS feed

  • Pergunta

  • Bom dia pessoal!!

     

    Sou novo aqui, e gostaria da ajuda de vcs...

    Bom é o seguinte, estou montando uma telinha de chamado com windows form, sempre qdo tiver um chamado no banco, ela abre...dentro dela tenho uma textbox anotações, se quiser anotar algo...o que eu preciso!!

    Ao inserir os dados dentro da textbox, irá salvar no banco...

    qdo eu iniciar o projeto, quero q esse dados, me retornem na msm textbox, +/- um histórico das anotações...tdas que eu inseri...

     

    vlw!!!

     

    Obs. Visual 2010 C#
           Banco MySql

     


    sexta-feira, 15 de julho de 2011 11:53

Respostas

  • Natan segue um exemplo de como pode ser feito, sei que os companheiros postaram mais é que já fiz o exemplo, o mesmo servirá de material de estudo pra vc. Criei um BD MySql com os campos (Id, Anotacao) exibo um histórico dos dados em um ListBox e uso o textbox para cadastrar novas anotações o código está todo comentado. Bons estudos!

     

     public Form1()
        {
          InitializeComponent();
        }
    
        //Classe Anotações
        public class Anotacoes
        {
          public int Id { get; set; }
          public string Anotacao { get; set; }
        }
    
        //Click do botão gravar
        private void btnGravar_Click(object sender, EventArgs e)
        {
          //variável auxiliar p/ mecanismo de mensagens
          int aux = -1;
          //Conexão
          MySqlConnection conn = new MySqlConnection(@"server=localhost;User Id=root;pwd=admin;database=test;");
          //Comando para inserir parametrizado
          string comando = "INSERT INTO teste (Anotacao) values (@Anotacao)";
          //instância do comando
          MySqlCommand cmd = new MySqlCommand(comando, conn);
          //Preenchimento dos parâmetros
          cmd.Parameters.AddWithValue("@Anotacao", txtAnotacao.Text);
          //abro a conexão
          conn.Open();
          //aux recebe o retorno da execução do comando
          aux = Convert.ToInt32(cmd.ExecuteNonQuery());
          //fecho conexão
          conn.Close();
          //se aux for maior que zero a inserção foi bem
          //sucedida
          if (aux > 0)
          {
            //mensagem de confirmação
            MessageBox.Show("Anotação salva!");
            //limpo textbox
            txtAnotacao.Text = "";
            //Atualizo o listbox
            CarregaLIstBox();
          }
          else
          {
            //mensagem de erro
            MessageBox.Show("Erro!");
          }
        }
    
        //método que consulta o bd e retorna um list
        //da classe anotações
        private List<Anotacoes> RecuperarAnotacao()
        {
          //instância da lista
          List<Anotacoes> lista = new List<Anotacoes>();
          MySqlConnection conn = new MySqlConnection(@"server=localhost;User Id=root;pwd=admin;database=test;");
          string comando = "SELECT Id,Anotacao from teste";
          MySqlCommand cmd = new MySqlCommand(comando, conn);
          conn.Open();
          //instância do leitor
          MySqlDataReader leitor = cmd.ExecuteReader();
          //se tiver linhas
          if (leitor.HasRows)
          {
            //enquanto leitor lê
            while (leitor.Read())
            {
              //nova anotação
              Anotacoes a = new Anotacoes();
              //recupero os valores do bd
              a.Id = Convert.ToInt32(leitor["Id"].ToString());
              a.Anotacao = leitor["Anotacao"].ToString();
              //adiciono a lista
              lista.Add(a);
            }
          }
          //fecho conexão
          conn.Close();
          //retorno a lista 
          return lista;
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
          //carrego a listbox
          CarregaLIstBox();
        }
    
        private void CarregaLIstBox()
        {
          //limpo os itens da listbox
          lbHistoricoAnotacao.Items.Clear();
          //percorro a lista
          foreach (var item in RecuperarAnotacao())
          {
            //adiciono os itens do list 
            //na listbox
            lbHistoricoAnotacao.Items.Add(item.Anotacao);
          }
        }
    

     

    Abraços e espero ter ajudado!


    Estudar, Estudar e Estudar! Não existe caminho curto.
    • Sugerido como Resposta [J]unior sexta-feira, 15 de julho de 2011 12:48
    • Marcado como Resposta Natan Piassi Magusso sexta-feira, 15 de julho de 2011 17:02
    sexta-feira, 15 de julho de 2011 12:47
  • Segue:

     

     private void CarregaLIstBox()
        {
          //-----------------Altere este Método -------------------
          //    como fiz Aqui
          txtAnotacao.Text = "";      
          foreach (var item in RecuperarAnotacao())
          {       
            txtAnotacao.Text += item.Anotacao +"\r\n";
          }
          //-----------------Altere este Método -------------------
        }
    

     

    abraços!


    Estudar, Estudar e Estudar! Não existe caminho curto.
    sexta-feira, 15 de julho de 2011 16:38

Todas as Respostas

  • Bom dia Natan!

    Qual seria sua dúvida?

     

     

     


    Estudar, Estudar e Estudar! Não existe caminho curto.
    sexta-feira, 15 de julho de 2011 11:56
  • Bom dia Natan,

     

    para retornar os dados você deve efetuar a consulta no banco. recomendo usar o dataset para retornar os dados, depois de preencher o dataset, é só passar os valores para os componentes.

     

    segue exemplo de como retornar os valores para o componente:

     

    Suponhamos que na sua Query o campo 3 seja o que você deseja passar para o textbox. Você pode referenciá-lo por indice ou pelo nome da coluna:

    por indice:

     

    Anotacao.Text = dataset.Tables[0].Rows[0][3].ToString();
    
    onde 3 é o indice da coluna.

     

    por nome:

     

    Anotacao.Text = dataset.Tables[0].Rows[0]["Anotacao"].ToString();
    

    Espero ter Ajudado.

     

     


    " É Melhor ficar calado e parecer um Idiota do que Abrir a boca e dar toda a Certeza! "
    Developer
    sexta-feira, 15 de julho de 2011 12:02
  • tipo, insiro algo na textbox = Natan...salvei no banco.

    quero q qdo eu iniciar o projeto, ele me retorna na msm textbox, o q eu acabei de inserir..

     

    tipo sempre q eu entrar no projeto ele me retorna td q ja foi inserido, +/- um historico...bom nao sei se deu pra entender.

    sexta-feira, 15 de julho de 2011 12:12
  • mais os dados que você pretende retornar do banco vem de várias tabelas?

     

    esses dados que você insere no textbox, são armazenados sempre no mesmo registro no banco?


    " É Melhor ficar calado e parecer um Idiota do que Abrir a boca e dar toda a Certeza! "
    Developer
    sexta-feira, 15 de julho de 2011 12:14
  •  private void btnSalvar_Click(object sender, Even

    tArgs e)
            {
                MySqlConnection conn = new MySqlConnection();
                MySqlCommand comando = new MySqlCommand();

                conn.ConnectionString = ("Server=Servidor;Database=Web;Uid=root;Pwd=xxxx;Connect Timeout=30");

                conn.Open();
               
                try
                {               
                    comando.Connection = conn;
                    comando.CommandText = "INSERT INTO usuarios(anotacoes) values (@anotacoes)";
                    comando.Parameters.AddWithValue("@anotacoes", txtAnotacoes.Text);
                    comando.ExecuteNonQuery();
                    conn.Close();
                    MessageBox.Show("Salvo com sucesso!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ocorreu um erro: " + ex.Message);
                }
                finally
                {
                    conn.Close();
                }

     

    tipo esse e o botao salvar, ele salva no banco blz, agora so quero q qdo eu iniciar o projeto, a textbox, me retorna o q ja foi insirido..

    sexta-feira, 15 de julho de 2011 12:21
  • Ola Natan,
    Como você está utilizando banco de dados MySQL, presumo que esteja fazendo a conexão através de um Driver ODBC certo?
    Para retornar o 'histórico' das anotações, basta inserir no evento onFormLoad da sua tela uma consulta no banco de dados retornando todas as anotações mais antigas.
    Você poderia utilizar assim:
    ...
      ODBCConnection conn = new ODBCConnection("String de conexão com o banco");
      conn.Open();
      ODBCCommand cmd = new ODBCCommand("SELECT tx_anotacao FROM TB_ANOTACAO");
      ODBCDataReader reader = cmd.ExecuteReader();
      
      while(reader.Read())
      {
        TextBox.Text += reader["tx_anotacao"].ToString() + "\r\n";
      }
      conn.Close();
    ...
    Também aconselho que você utilize o componente RichTextBox ao invés de um TextBox normal.
    • Sugerido como Resposta Jefferson Alan sexta-feira, 15 de julho de 2011 12:41
    sexta-feira, 15 de julho de 2011 12:26
  • Cara faz o seguinte,
    faça a consulta no banco quando você iniciar o projeto, e (não sei se o Mysql da suporte ao DataAdapter) se ele der suporte, preencha o dataset com o dataAdapter e devolva o valor para o textbox:
    veja o exemplo (sql):
       try
       {
        sqlConection.Open();
    
        String sInstrucaoSql = "SpSe1SolCompra " + CodEmp.Text + " , " + Numero.Text;
    
        //Gravando os dados em um DataSet para posterior Exibição//
        SqlDataAdapter DataAdapter = new SqlDataAdapter(sInstrucaoSql, sqlConection);
        DataSet dataset = new DataSet();
    
        if (DataAdapter.Fill(dataset) != 0)
        {
         lbDataSolicitacao.Text = Funcoes.TrabalhaDataII(Convert.ToDateTime(dataset.Tables[0].Rows[0]["DataSol"].ToString()));
         Solicitante.Text = dataset.Tables[0].Rows[0]["Solicitante"].ToString();
         Destino.Text = dataset.Tables[0].Rows[0]["AplicacaoConsulta"].ToString(); 
         Observacoes.Text = dataset.Tables[0].Rows[0]["Obs"].ToString();
        }
       }
       catch (Exception ex)
       {
        MessageBox.Show("Erro ao Carregar a Tabela da Solicitação " + Numero.Text + "!" + ex.ToString(), "Aprovação Solicitação de Compras", MessageBoxButtons.OK, MessageBoxIcon.Error);
       }
       finally
       {
        sqlConection.Close();
       }
    

    Veja se te ajuda

    " É Melhor ficar calado e parecer um Idiota do que Abrir a boca e dar toda a Certeza! "
    Developer
    sexta-feira, 15 de julho de 2011 12:37
  • Natan segue um exemplo de como pode ser feito, sei que os companheiros postaram mais é que já fiz o exemplo, o mesmo servirá de material de estudo pra vc. Criei um BD MySql com os campos (Id, Anotacao) exibo um histórico dos dados em um ListBox e uso o textbox para cadastrar novas anotações o código está todo comentado. Bons estudos!

     

     public Form1()
        {
          InitializeComponent();
        }
    
        //Classe Anotações
        public class Anotacoes
        {
          public int Id { get; set; }
          public string Anotacao { get; set; }
        }
    
        //Click do botão gravar
        private void btnGravar_Click(object sender, EventArgs e)
        {
          //variável auxiliar p/ mecanismo de mensagens
          int aux = -1;
          //Conexão
          MySqlConnection conn = new MySqlConnection(@"server=localhost;User Id=root;pwd=admin;database=test;");
          //Comando para inserir parametrizado
          string comando = "INSERT INTO teste (Anotacao) values (@Anotacao)";
          //instância do comando
          MySqlCommand cmd = new MySqlCommand(comando, conn);
          //Preenchimento dos parâmetros
          cmd.Parameters.AddWithValue("@Anotacao", txtAnotacao.Text);
          //abro a conexão
          conn.Open();
          //aux recebe o retorno da execução do comando
          aux = Convert.ToInt32(cmd.ExecuteNonQuery());
          //fecho conexão
          conn.Close();
          //se aux for maior que zero a inserção foi bem
          //sucedida
          if (aux > 0)
          {
            //mensagem de confirmação
            MessageBox.Show("Anotação salva!");
            //limpo textbox
            txtAnotacao.Text = "";
            //Atualizo o listbox
            CarregaLIstBox();
          }
          else
          {
            //mensagem de erro
            MessageBox.Show("Erro!");
          }
        }
    
        //método que consulta o bd e retorna um list
        //da classe anotações
        private List<Anotacoes> RecuperarAnotacao()
        {
          //instância da lista
          List<Anotacoes> lista = new List<Anotacoes>();
          MySqlConnection conn = new MySqlConnection(@"server=localhost;User Id=root;pwd=admin;database=test;");
          string comando = "SELECT Id,Anotacao from teste";
          MySqlCommand cmd = new MySqlCommand(comando, conn);
          conn.Open();
          //instância do leitor
          MySqlDataReader leitor = cmd.ExecuteReader();
          //se tiver linhas
          if (leitor.HasRows)
          {
            //enquanto leitor lê
            while (leitor.Read())
            {
              //nova anotação
              Anotacoes a = new Anotacoes();
              //recupero os valores do bd
              a.Id = Convert.ToInt32(leitor["Id"].ToString());
              a.Anotacao = leitor["Anotacao"].ToString();
              //adiciono a lista
              lista.Add(a);
            }
          }
          //fecho conexão
          conn.Close();
          //retorno a lista 
          return lista;
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
          //carrego a listbox
          CarregaLIstBox();
        }
    
        private void CarregaLIstBox()
        {
          //limpo os itens da listbox
          lbHistoricoAnotacao.Items.Clear();
          //percorro a lista
          foreach (var item in RecuperarAnotacao())
          {
            //adiciono os itens do list 
            //na listbox
            lbHistoricoAnotacao.Items.Add(item.Anotacao);
          }
        }
    

     

    Abraços e espero ter ajudado!


    Estudar, Estudar e Estudar! Não existe caminho curto.
    • Sugerido como Resposta [J]unior sexta-feira, 15 de julho de 2011 12:48
    • Marcado como Resposta Natan Piassi Magusso sexta-feira, 15 de julho de 2011 17:02
    sexta-feira, 15 de julho de 2011 12:47
  • Natan segue um exemplo de como pode ser feito, sei que os companheiros postaram mais é que já fiz o exemplo, o mesmo servirá de material de estudo pra vc. Criei um BD MySql com os campos (Id, Anotacao) exibo um histórico dos dados em um ListBox e uso o textbox para cadastrar novas anotações o código está todo comentado. Bons estudos!

     

     

     public Form1()
      {
       InitializeComponent();
      }
    
      //Classe Anotações
      public class Anotacoes
      {
       public int Id { get; set; }
       public string Anotacao { get; set; }
      }
    
      //Click do botão gravar
      private void btnGravar_Click(object sender, EventArgs e)
      {
       //variável auxiliar p/ mecanismo de mensagens
       int aux = -1;
       //Conexão
       MySqlConnection conn = new MySqlConnection(@"server=localhost;User Id=root;pwd=admin;database=test;");
       //Comando para inserir parametrizado
       string comando = "INSERT INTO teste (Anotacao) values (@Anotacao)";
       //instância do comando
       MySqlCommand cmd = new MySqlCommand(comando, conn);
       //Preenchimento dos parâmetros
       cmd.Parameters.AddWithValue("@Anotacao", txtAnotacao.Text);
       //abro a conexão
       conn.Open();
       //aux recebe o retorno da execução do comando
       aux = Convert.ToInt32(cmd.ExecuteNonQuery());
       //fecho conexão
       conn.Close();
       //se aux for maior que zero a inserção foi bem
       //sucedida
       if (aux > 0)
       {
        //mensagem de confirmação
        MessageBox.Show("Anotação salva!");
        //limpo textbox
        txtAnotacao.Text = "";
        //Atualizo o listbox
        CarregaLIstBox();
       }
       else
       {
        //mensagem de erro
        MessageBox.Show("Erro!");
       }
      }
    
      //método que consulta o bd e retorna um list
      //da classe anotações
      private List<Anotacoes> RecuperarAnotacao()
      {
       //instância da lista
       List<Anotacoes> lista = new List<Anotacoes>();
       MySqlConnection conn = new MySqlConnection(@"server=localhost;User Id=root;pwd=admin;database=test;");
       string comando = "SELECT Id,Anotacao from teste";
       MySqlCommand cmd = new MySqlCommand(comando, conn);
       conn.Open();
       //instância do leitor
       MySqlDataReader leitor = cmd.ExecuteReader();
       //se tiver linhas
       if (leitor.HasRows)
       {
        //enquanto leitor lê
        while (leitor.Read())
        {
         //nova anotação
         Anotacoes a = new Anotacoes();
         //recupero os valores do bd
         a.Id = Convert.ToInt32(leitor["Id"].ToString());
         a.Anotacao = leitor["Anotacao"].ToString();
         //adiciono a lista
         lista.Add(a);
        }
       }
       //fecho conexão
       conn.Close();
       //retorno a lista 
       return lista;
      }
    
      private void Form1_Load(object sender, EventArgs e)
      {
       //carrego a listbox
       CarregaLIstBox();
      }
    
      private void CarregaLIstBox()
      {
       //limpo os itens da listbox
       lbHistoricoAnotacao.Items.Clear();
       //percorro a lista
       foreach (var item in RecuperarAnotacao())
       {
        //adiciono os itens do list 
        //na listbox
        lbHistoricoAnotacao.Items.Add(item.Anotacao);
       }
      }
    

     

     

    Abraços e espero ter ajudado!


    Estudar, Estudar e Estudar! Não existe caminho curto.
    Pablo deu certo mto obrigado, mais como q eu faço pra ele retornar dentro da textbox??
    sexta-feira, 15 de julho de 2011 16:29
  • Segue:

     

     private void CarregaLIstBox()
        {
          //-----------------Altere este Método -------------------
          //    como fiz Aqui
          txtAnotacao.Text = "";      
          foreach (var item in RecuperarAnotacao())
          {       
            txtAnotacao.Text += item.Anotacao +"\r\n";
          }
          //-----------------Altere este Método -------------------
        }
    

     

    abraços!


    Estudar, Estudar e Estudar! Não existe caminho curto.
    sexta-feira, 15 de julho de 2011 16:38
  • Cara MUUITO OBRIGADO, vlw msm, agora so tenho q ver aqui, na hora de salvar ele tah dando erro, aparece a janela "Erro!", mas vou ver aqui

     

    vlw msm!!

    sexta-feira, 15 de julho de 2011 17:01