Como salvar dados de um datadridviw no mysql (desenvolvendo em c.sharp)
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
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
Curtidas 0
Melhor post
Alisson Santos
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.
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(); } } }
GOSTEI 1
Mais Respostas
Bruno
11/06/2016
Alisson Obrigado pelo feedback, porem ocorreu o seguinte... ele so salvou os dados da primeira linha ! as demais não salvou.
GOSTEI 0
Bruno
11/06/2016
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);
GOSTEI 0
Bruno
11/06/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.
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.
GOSTEI 0