none
Salvar infomação de um datagridView no Mysql C# RRS feed

  • Pergunta

  • Boa noite.

    Estou com um grande problema que não consigo solucionar a 1 mês :(.

    Eu preciso pegar as informações do meu Grid : código, produto, qtd e valor e inseri-lo no meu banco de dados Mysql estou desenvolvendo no windows form  C#, eu consegui fazer de uma forma porem ele só salva a primeira linha as demais não salvam

    sábado, 18 de junho de 2016 01:38

Respostas

  • e aí Bruno blz?

    cria duas classes no seu projeto

    uma com os dados que vc qer gravar e outro como array:

     class dadosPokemon
        {
            public int  id        { get; set; }
            public string nome     { get; set; }
            public string tipo    { get; set; }
            public string local   { get; set; }            
        }

    e a outra:   

     class arrayDadosCliente: List<dadosCliente>
        {
        }

    e cria uma função para atualizar o datagridview                                                              

    private void atualizaDGV()
            {
                try
                {
                    Conexao.Open();
                }
                catch
                {
                    MessageBox.Show("Impossível estabelecer conexão");
                }
                if (ConexaoPokedex.State == ConnectionState.Open)
                {
                    MySqlCommand comando = new MySqlCommand("SELECT * FROM nometabela"
                        , Conexao);
                    MySqlDataReader drComando;
                    drComando = comando.ExecuteReader(CommandBehavior.CloseConnection);
                    arrayDadosCliente arrayDados = new arrayDadosCliente();
                    while (drComando.Read())
                    {

                        dadosCliente dados = new dadosCliente();
                        dados.id = Convert.ToInt32(drComando["id"]);
                       dados.nome = Convert.ToString(drComando["nome"]);
                       dados.local = Convert.ToString(drComando["localizacao"]);
                       dados.tipo = Convert.ToString(drComando["tipo"]);

                       arrayDados.Add(dados);

                        dgv.DataSource = null;
                        dgv.DataSource = arrayDados;
                        dgv.Refresh();

                        dgv.Columns[0].HeaderText = "NÚMERO";
                        dgv.Columns[1].HeaderText = "NOME";
                        dgv.Columns[2].HeaderText = "LOCALIZAÇÃO";
                        dgv.Columns[3].HeaderText = "TIPO";




                        dgv.CurrentCell =
                            dgv.Rows[dgv.Rows.Count - 1].Cells[1];
                    }
                    Conexao.Close();

    DESTA FORMA VOCE ATUALIZA SEU DATA GRID VIEW E INSERI NO BANCO DE DADOS!

    ESPERO QUE TENHA AJUDADO!


    sábado, 18 de junho de 2016 07:06

Todas as Respostas

  • Boa noite.

    Estou com um grande problema que não consigo solucionar a 1 mês :(.

    Eu preciso pegar as informações do meu Grid : código, produto, qtd e valor e inseri-lo no meu banco de dados Mysql estou desenvolvendo no windows form  C#, eu consegui fazer de uma forma porem ele só salva a primeira linha as demais não salvam

    for (int i = 0; i < dataCPM2.Rows.Count - 1; i++)
      {
    
        vnd.codProduto = Convert.ToInt32(dataCPM2.Rows[i].Cells[0].Value);
        vnd.nomeProduto = dataCPM2.Rows[i].Cells[1].Value.ToString();
        vnd.quantidade = Convert.ToInt32(dataCPM2.Rows[i].Cells[2].Value);
        vnd.valorTotal = dataCPM2.Rows[i].Cells[3].Value.ToString();
    
      }
     msv.salvarProduto(vnd);//<--- metodo de uma classe para salvar os dados no banco

    Consegui chegar até aqui porem ele só salva a primeira linha, não sei o que fazer
    sábado, 18 de junho de 2016 01:43
  • Boa noite.

    Estou com um grande problema que não consigo solucionar a 1 mês :(.

    Eu preciso pegar as informações do meu Grid : código, produto, qtd e valor e inseri-lo no meu banco de dados Mysql estou desenvolvendo no windows form  C#, eu consegui fazer de uma forma porem ele só salva a primeira linha as demais não salvam

    for (int i = 0; i < dataCPM2.Rows.Count - 1; i++)
      {
    
        vnd.codProduto = Convert.ToInt32(dataCPM2.Rows[i].Cells[0].Value);
        vnd.nomeProduto = dataCPM2.Rows[i].Cells[1].Value.ToString();
        vnd.quantidade = Convert.ToInt32(dataCPM2.Rows[i].Cells[2].Value);
        vnd.valorTotal = dataCPM2.Rows[i].Cells[3].Value.ToString();
    
      }
     msv.salvarProduto(vnd);//<--- metodo de uma classe para salvar os dados no banco

    Consegui chegar até aqui porem ele só salva a primeira linha, não sei o que fazer
    public void salvarProduto(Venda vnd)// <-- passo a classe venda como parametro
     {
                string caminhoDoBanco = "server=localhost;user id=BDASQL;password=admin;database=invict;";
                string insercao = "INSERT INTO TB_VENDAS(CODIGO, CODCLIENTE, NOME_CLIENTE, CODPRODUTO, NOME_PRODUTO, QUANTIDADE, VALOR, DATA) VALUES ('"+vnd.codVenda+"', '"+vnd.codCliente+"', '"+vnd.nomeCliente+"', '"+vnd.codProduto+"', '"+vnd.nomeProduto+"', '"+vnd.quantidade+"', '"+vnd.valorProduto+"', NOW())";
                conexao = new MySqlConnection(caminhoDoBanco);
                MySqlCommand cmd = new MySqlCommand(insercao, conexao);
    
                try
                {
                    conexao.Open();
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("deu certo ok");
    
                }
                catch (MySqlException ex)
                {
    
                    MessageBox.Show(ex.Message);
    
                }
                finally
                {
                    conexao.Close();
    
                }
    Este é o método que usei de uma classe para salvar dados da classe venda.

    sábado, 18 de junho de 2016 01:46
  • e aí Bruno blz?

    cria duas classes no seu projeto

    uma com os dados que vc qer gravar e outro como array:

     class dadosPokemon
        {
            public int  id        { get; set; }
            public string nome     { get; set; }
            public string tipo    { get; set; }
            public string local   { get; set; }            
        }

    e a outra:   

     class arrayDadosCliente: List<dadosCliente>
        {
        }

    e cria uma função para atualizar o datagridview                                                              

    private void atualizaDGV()
            {
                try
                {
                    Conexao.Open();
                }
                catch
                {
                    MessageBox.Show("Impossível estabelecer conexão");
                }
                if (ConexaoPokedex.State == ConnectionState.Open)
                {
                    MySqlCommand comando = new MySqlCommand("SELECT * FROM nometabela"
                        , Conexao);
                    MySqlDataReader drComando;
                    drComando = comando.ExecuteReader(CommandBehavior.CloseConnection);
                    arrayDadosCliente arrayDados = new arrayDadosCliente();
                    while (drComando.Read())
                    {

                        dadosCliente dados = new dadosCliente();
                        dados.id = Convert.ToInt32(drComando["id"]);
                       dados.nome = Convert.ToString(drComando["nome"]);
                       dados.local = Convert.ToString(drComando["localizacao"]);
                       dados.tipo = Convert.ToString(drComando["tipo"]);

                       arrayDados.Add(dados);

                        dgv.DataSource = null;
                        dgv.DataSource = arrayDados;
                        dgv.Refresh();

                        dgv.Columns[0].HeaderText = "NÚMERO";
                        dgv.Columns[1].HeaderText = "NOME";
                        dgv.Columns[2].HeaderText = "LOCALIZAÇÃO";
                        dgv.Columns[3].HeaderText = "TIPO";




                        dgv.CurrentCell =
                            dgv.Rows[dgv.Rows.Count - 1].Cells[1];
                    }
                    Conexao.Close();

    DESTA FORMA VOCE ATUALIZA SEU DATA GRID VIEW E INSERI NO BANCO DE DADOS!

    ESPERO QUE TENHA AJUDADO!


    sábado, 18 de junho de 2016 07:06
  • Boa noite, amigo.

    Embora seja um problema antigo (2016), estou postando essa resposta caso outros estejam à procura de uma solução para essa mesma questão.

    A solução que o Bruno propôs acima daria certo se ele tivesse colocado o método de salvamento no banco dentro do FOR, como abaixo:

    for (int i = 0; i < dataCPM2.Rows.Count - 1; i++) { vnd.codProduto = Convert.ToInt32(dataCPM2.Rows[i].Cells[0].Value); vnd.nomeProduto = dataCPM2.Rows[i].Cells[1].Value.ToString(); vnd.quantidade = Convert.ToInt32(dataCPM2.Rows[i].Cells[2].Value); vnd.valorTotal = dataCPM2.Rows[i].Cells[3].Value.ToString();

    msv.salvarProduto(vnd);//<--- metodo de uma classe para salvar os dados no banco }

    O raciocínio dele estava correto. Foi apenas um erro de lógica.
    terça-feira, 12 de novembro de 2019 22:29