Fórum Como salvar dados de um datadridviw no mysql (desenvolvendo em c.sharp) #556979
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
Curtir tópico
+ 0Post 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
Gostei + 1
Mais Posts
13/06/2016
Bruno
Gostei + 0
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);
Gostei + 0
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)