Como salvar dados de um datadridviw no mysql (desenvolvendo em c.sharp)
11/06/2016
0
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
Post mais votado
13/06/2016
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
Mais Posts
13/06/2016
Bruno
13/06/2016
Bruno
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);
19/06/2016
Bruno
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.
Clique aqui para fazer login e interagir na Comunidade :)