Como salvar dados de um datadridviw no mysql (desenvolvendo em c.sharp)

11/06/2016

0

Ola galera.

Como faço para salvar dados de um datagrid em uma tabela do mysql ao clicar em um botão.

ex.

datagridviw

codigo | descricao | valor

1 | coca-cola 2lts | 10,00
510 | feijao carioca | 9,50
789 | arroz | 8,50

ex banco mysq

tabela produto_da_venda(
codigo inteiro
descricao caractere
valor decimal
);


os dados seriam gravados qnd eu clicasse em um botão.

não é bem assim q esta meu sistema, mas se conseguirem me explicar com este ex. acima eu me viro obg
Bruno

Bruno

Responder

Post mais votado

13/06/2016

Creio que o código abaixo irá te ajudar.
Deverá criar um laço e pode ser feito um foreach ou um for normal, vai do seu critério. O for fica mais facil para utilizar o indice.

 if (gdvItens.Rows.Count > 1)
                {
                    for (int i = 0; i <= gdvItens.Rows.Count - 1; i++)
                    {
                         int codigo= Convert.ToInt32(gdvItens.Rows[i].Cells[0].Value);
                         string descricao = gdvItens.Rows[i].Cells[1].Value.ToString();
                         decimal valor= Convert.ToDecimal(gdvItens.Rows[i].Cells[2].Value);

                        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Banco"].ConnectionString))
                        {
                            string insert = "INSERT INTO Itens(codigo,descricao,valor) VALUES (@codigo,@descricao,@valor)";
                            con.Open();
                            SqlCommand cmd = new SqlCommand(insert, con);
                            cmd.Parameters.AddWithValue("@codigo", codigo);
                            cmd.Parameters.AddWithValue("@descricao", descricao);
                            cmd.Parameters.AddWithValue("@valor", valor);
                            cmd.ExecuteNonQuery();
                            con.Close();
                        }
                    }
                }

Alisson Santos

Alisson Santos
Responder

Mais Posts

13/06/2016

Bruno

Alisson Obrigado pelo feedback, porem ocorreu o seguinte... ele so salvou os dados da primeira linha ! as demais não salvou.
Responder

13/06/2016

Bruno

Eu havia criado uma classe com nome venda, e outra clase com objetivo de salvar os dados no mysql

 class MySqlVenda
    {

        MySqlConnection conexao;

        public void salvarVenda(Venda vnd) /* <--- neste metodo eu pego os dados da classe e insiro no banco */
        {

            string caminhoDoBanco = "server=localhost;user id=BDASQL;password=admin;database=invict;";
            string insercao = "INSERT INTO TABELA_VENDA(CODVENDA, CODCLIENTE, NOME_CLIENTE, CODPRODUTO, NOME_PRODUTO, QUANTIDADE, VALOR, TOTAL, COD_PGTO, FORMA_DE_PAGAMENTO, DESCONTO, DATA) VALUES ('" + vnd.codVenda + "', '" + vnd.codCliente + "', '" + vnd.nomeCliente + "', '" + vnd.codProduto + "', '" + vnd.nomeProduto + "', '" + vnd.quantidade + "', '" + vnd.valorProduto + "', '" + vnd.valorTotal + "', '" + vnd.codPgto + "', '" + vnd.descricaoPagamento + "' , '" + vnd.desconto + "', CURRENT_TIMESTAMP); ";
            conexao = new MySqlConnection(caminhoDoBanco);
            MySqlCommand cmd = new MySqlCommand(insercao, conexao);

            try
            {

                conexao.Open();
                cmd.ExecuteNonQuery();
                MessageBox.Show("deu certo");


            }
            catch (MySqlException ex)
            {

                MessageBox.Show(ex.Message);

            }
            finally
            {
                conexao.Close();

            }


        }




class Venda
    {

     /* Aqui esta a clase venda eu populei alguns atributos so p mim fazer testes */
        public int codVenda = 1;
        public int codCliente = 1;
        public string nomeCliente = string.Empty;
        public int codProduto = 0;
        public string nomeProduto = string.Empty;
        public int quantidade = 0;
        public string valorProduto = "";
        public string valorTotal = "";
        public int codPgto = 1;
        public string descricaoPagamento = string.Empty;
        public string desconto = string.Empty;
        

    }




private void btnFechaVenda_Click(object sender, EventArgs e)
        {
            MySqlVenda msv = new MySqlVenda();
            Venda vnd = new Venda();

            if (dataCPM2.Rows.Count > 1)
            {

                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();

                    

                    /*int codigo = Convert.ToInt32(gdvItens.Rows[i].Cells[0].Value);
                    string descricao = gdvItens.Rows[i].Cells[1].Value.ToString();
                    decimal valor = Convert.ToDecimal(gdvItens.Rows[i].Cells[2].Value);
                  */
                }
            }

            msv.salvarVenda(vnd);


Responder

19/06/2016

Bruno

Alisson Obrigado cara deu certo.

O problema era q na tabela n:n eu havia deixado a chave primaria e estrangeira no mesmo atributo com isso ele so gravava uma linha e retornava uma mensagem dizendo que nao podia haver entrada duplicada na chave primaria algo do tipo obrigado.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar