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ódigoprivate 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.