Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 557023
            [titulo] => Como salvar dados de um datadridviw no mysql (desenvolvendo em c.sharp)
            [dataCadastro] => DateTime Object
                (
                    [date] => 2016-06-13 11:37:46
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 250291
            [status] => A
            [isExample] => 
            [NomeUsuario] => Alisson Santos
            [Apelido] => Alisson
            [Foto] => P3290249-2.JPG
            [Conteudo] => 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.

[code]
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();
}
}
}
[/code] ) )

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

Bruno
   - 11 jun 2016

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

Post mais votado

Alisson
|
MVP
Pontos: 3400
    13 jun 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.

#Código

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

Bruno
   - 13 jun 2016

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

Bruno
   - 13 jun 2016

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

#Código

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

            }


        }


#Código
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;
        

    }


#Código
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);


Bruno
   - 19 jun 2016

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.